Broke the different properties out into their own files, improving the code as I went.