Provide better structure

Here is my attempt at breaking out the files a bit nicer. I am sure I have broken something, haven't been able to test it yet.