better documentation
improved error handling; using dictionary to store _change values on ChangeMachine