overhaul. Easier to update and maintain now