* Callback is optional, so that code extending the object can take over the job of calling it
* new and edit use snazzy new form macros, edit extends new