implementing new chracter fsm