Split the classes out to separate files (overdue)