Thanks for going into more detail. I'm not versed enough in C::P to know if it is good enough for this, either, but I'm sure C::A was not designed for a polymorphic view of the world. And I'm also sure that polymorphism is the way to go for this task.
"There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.