Abstract Class + Enum cleanup

this may look good on my resume one day