More refactoring... slowly honing in a some sort of design ideas in my head