added state machine gem