Refactored into packages. Some intelliJ files have been added. They can be ignored if you are using a different IDE