Cleanup methods, move responsibility of changing state to transition.
Use more descriptive variable names.
Remove duplication from tests.
Merge pull request #2 from ericroberts/refactoring

Cleanup methods, move responsibility of changing state to transition.