I present a semi-recursive Kirchhoff migration algorithm which is capable of obtaining accurate images of complex structures by combining wave-equation datuming and Kirchhoff migration. The method is successful because breaking up the complex velocity structure into small depth regions allows traveltimes to be calculated in regions where the computation is well behaved and where the computation corresponds to energetic arrivals. The traveltimes computed in such a region are used first for imaging, and second for downward continuation of the entire survey (shots and receivers) to the boundary of the next region. This process results in images comparable to those obtained by shot-profile migration, but at reduced computational cost. Because traveltimes are computed for small depth domains, the adverse effects of caustics, headwaves, and multiple arrivals do not develop. In principle, this method requires only the same number of traveltime calculations as a standard migration. Tests on the Marmousi data set produce excellent results.