major overhaul separation of concerns