Major Refactoring incoming