After much annoyance and trial and error, add client side validation of inputs to resolve #3. Add a backup of the model currently being edited so it can be restored when cancel is pressed. Make user password field an actual password field.