Assignment 1 Protocol vs subclasses