In multi-level systems, the commonly used adiabatic elimination is a method for approximating the dynamics of the system by eliminating irrelevant, non-resonantly coupled levels. This procedure is, however, somewhat ambiguous and it is not clear how to improve on it systematically. We use an integro-differential equation for the probability amplitudes of the levels of interest, which is equivalent to the original Schrodinger equation for all probability amplitudes. In conjunction with a Markov approximation, the integro-differential equation is then used to generate a hierarchy of approximations, in which the zeroth order is the adiabatic-elimination approximation. It works well with a proper choice of interaction picture; the procedure suggests criteria for optimizing this choice. The first-order approximation in the hierarchy provides significant improvements over standard adiabatic elimination, without much increase in complexity, and is furthermore not so sensitive to the choice of interaction picture. We illustrate these points with several examples.