Refactored derive to construct a stream from a channel
Fixed initial function to use channels
Refactor of event-streams into more focused functions