Major refactoring <3
Major refactoring <3