In the real world, objects are often classified in orthogonal ways, rather than in the tree-like hierarchy of Smalltalk. For example, the bald eagle and the condor are both birds of prey, but one is a North American bird and the other a South American bird. The robin is also a North American bird but is not a bird of prey. These two distinguishing characteristics are orthogonal in that neither can logically be said to be a superset of the other. Thus, forcing the classification into a treelike structure is either unnatural, inefficient, or both.
How might Smalltalk objects be classified in orthogonal ways? What problems does this introduce for the inheritance mechanism? How might these problems be overcome
$$
\begin{array}{c|c|c}
& {\begin{array}{c}
\text { Bird } \\
\text { of } \\
\text { Prey }
\end{array}} & {\begin{array}{c}
\text { Not a Bird } \\
\text { of } \\
\text { Prey }
\end{array}} \\ \begin{array}{c}
\text { North } \\
\text { American }
\end{array} & \begin{array}{c}
\text { Bald } \\
\text { Eagle }
\end{array} & \text { Robin } \\ \begin{array}{c}
\text { South } \\
\text { American }
\end{array} & \text { Condor } & ?
\end{array}
$$