* Simplify the code * Drop Boost.MSM dependency * Drop threaded execution * Support deferred state changes * Monitor state changes/queues via callbacks