Split up the intermediary code into more compilation units to keep a grip on things