TODO: remove buffering.