Add cancel, reset, submit buttons, more flexible (and actually correct) form building