refactored to split eventable into two types

eventable is no emitter and detector. closes #1