hash+buffer streams refactor