make setMode private
add changeState func to State
Implement singleton pattern for State subclasses