As attributes we find a container object for the animals implemented as a list and a slot for a base-object needed to answer unknown messages sent to the object.
The method `who-are-you' is something like a virtual method, functioning as a reminder that a real `who-are-you' method has to be implemented in the derived classes. If a derived class would not provide a real `who-are-you' method, the virtual method would issue an error message, if the `who-are-you' message was sent to the instance of a derived class.
The `get-name' method is a real method inherited by all derived classes. Thus `get-name' does not have to be explicitely defined in the classes derived from class `animal'.