Refactored this project so it's in much smaller and manageable parts