copied over classes from previous assignment for modification