interface refactorings, added buffering