simplified read external loop