reorganised forms into a cleaner structure using a separate  package