Feature/forms refactor

Need another pair of eyes on this.