Refactor

get rid of commands. use only message and event
move common properties and methods to Traits