Major overhaul using more OOD