modify due to requirement to use event emitters... perhaps using Promises will be better?