Add modules and file architecture

@PrototypeAlex keen to have a chat about this stuff with you at some point.