This article shows how to solve a seemingly tough C++ hierarchy problem with some simple ideas using templates. In short, we will discover the need for functions which consume and return types (obviously such functions only matter at compile time), and see how such functions can be implemented. Basically, the very basics of type level programming.