moved form objects back into first class objects. Next stage is to abstract out common behaviour. This will make it reusable and easier to maintain. As it was it was difficult to change and hard to understand.