ClassDefinition pointers are made boost::shared_ptr to reduce memory leak