you are right if done right it should be done in the same way we did sgreferenced data: there exists just a single RefCount object that is shared among all objects of this CSGObject and then when none exists it is deleted. currently we just don't do that and so I guess we will always have issues with the copy constructor. I would rather make the copy constructor private or something everywhere to ensure that we don't have garbage and then one by one later add things back *sigh*