Shouldn't Type have a virtual destructor? I think it's a pretty reasonable usage case that we (or someone) could allocate a Class on the heap and store it in a container of Type*. I haven't looked to see if we do this yet or not.