Eventing and command refactor