Added a lot of comments, and decided against using redundant Handle functions in the Model object, like Model.on.