added some helper methods to transform callbacks into streams and promises