Streams enhancement

Commits message explain what it is about, please read them and read diff commit after commit