basic form that understands difference between new and edit