templatized event emitters
made streams generic
refactoring streams and thinking about adding futures