Some more work, turn the different structs into one 'oops' class.