use event emitters
documentation and test skeleton