Ensemble Kalman filters work within the iterative Bayesian framework of the classical Kalman filter: assimilate new data by statistically interpolating between it and a prior (background) estimate of the system state, then use the result to forecast the background state for the next assimilation cycle. They allow for nonlinear model dynamics by using an ensemble of forecasts (rather than a linearized model) to assess the background uncertainty, and the assimilation essentially determines what linear combination of ensemble states best fits the data. In practice, some modification to the Kalman filter formalism (including covariance localization and inflation) is necessary in order to compensate for the problems of small sample (ensemble) size, nonlinearity, and model error. I will describe an approach that attempts to solve the "best fit" problem in a manner that is both computationally efficient and effective for atmospheric models. Formally it combines elements of the Ensemble Transform Kalman Filter (Bishop et al. 2001) and the Local Ensemble Kalman Filter (Ott et al. 2004). The filter allows for nonlinear, nonlocal dependence of observations on model state variables, and is able to deal easily with asynchronous data: it can assimilate batched data accumulated over a period of time with very little loss of accuracy relative to assimilating data more frequently, as it arrives.