Add support for multi word states
Fix visibility
Add Traits version of State Machine