Separate out the classes for readability

was too messy, fixed all relevant projects to contain the new classes.