add form, refactor