update to use emitters instead of eventable