Complete overhaul to catch up to changes, redid enums for brevity