Initially polymake [1,2,3] was conceived as a collection of tools for studying convex polyhedra only. The early versions of
polymake had a very primitive data management, built around a single data type for polyhedra. However, as the time passed,
more and more different discrete mathematical structures like graphs and simplicial complexes came along. This gave rise to
a properly typed object hierarchy, which was strict enough to support established object-oriented (OO) software techniques,
but, on the other side, flexible enough to allow for continuous extensions without breaking the compatibility.