Feature/forms

- [x] finish the code
- [x] gather feedback for my changes

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Tests pass?   | none
| Fixed tickets | yes
| Doc           | none