Refactored Actor states and events. Events are now case classes to facilitate pattern matching and carry more information.