Added (Working) FSM and Option<T> monad.