EventManager is ugly, but it works

trap bugs not fixed here