Polymorphism in C seems to work fine via unions as long as you don't make the structs within the union too large, which isn't really a problem because you usually want to avoid that anyways. I'm really liking this so far and I expect it to scale well when I add more and more complex object types.