Made abstract, interface, and subclasses