Divided Cathedral.h into separate header files and move implementation to headers