use util to inherit
emit events
add eventListeneners
naming