Refactored everything and seperated .hpp and .cpp

General Code Etiquette