Rough design pass on the rest of the classesssess