streaming interface refactoring