Add nextState() Method and implement new states. Fix #12 #8.