Setup the basic framework for doing state transitions
Merge branch 'feature-add-framework-for-state-transitions'