First major refactoring checkpoint
Major checkpoint