Added optional pre and post save callbacks