Update the method yet again.
Saving before callback rewrite.
Initial rewrite of callbacks and much more. Documentation needs updating.