Cleanup of the new code

Some parts made more efficient; improved naming, cleaned design.
Fixed the new save_model method, which was not calling super(...).

Please note that it is a good practice to always call the original method from
the overriden one, unless you have a very good reason not to.
This way it allows others to do their extensions as well.