runs like a stream composes like data