State Pattern Completed