WIP Refactoring everything