fsm
type Action<E> = Box<Fn(E)>;
Actions are just boxed immutable functions that take an argument of the event that triggered them