broke everything out to files for better readability