Split code up into multiple files to make it easier to handle