Separated code into multiple files, added scripts for easier setup