add second type parameter to Stream -> first for inputs second for outputs
reorganize folders layout for future extensions ( maybe )