State Pattern
Removed enum
Log