We talked about making the collisionfilter a member a while back already, so why not? The worldobject would hold the collisionfilter as a (unique)pointer and setCollisionFilter() would be a protected member. WorldObject::WorldObject(WorldObjectType type) would create a normal CollisionFilter based on the type (we talked about WorldObjectType instead of CollisionFilterClass for some other reason, I cannot recall) and Bullet would overwrite it with a CreatorNeutralCollisionFilter in its constructor. Yeah, this is minor stuff but I think we could end up clean this way, wouldn't we?