#18 Splitted forms and some design refactoring.