Don't have Layers expose the actual data layer, just handle data-related functions like refresh. Layers will delegate data-related stuff to the top data layer (in case there are multiple).
No lon, lat in form. Details page doesn't assume feature to update has geomeotry (new method still passed a position instead any subset of feature data).
Details page can do new or update on any partial GeoJSON features - they may or may not have a geometry or other fields populated. prePopulators get the incoming feature passed (as well as the page).
onSaves get the GeoJSON feature just before it's send to the server (instead of dealing with the form HTML).