I've tried to avoid messing up your code, but I'm going to add 'public string name' lines to your RigidBody, SoftBody, and other classes. Just in my copy, I haven't created a branch of the source . Personally I think one should be able to name any object that the user typically creates. Debugging would be much easier, and I'm not sure how your CompoundShape is going to behave(I have to guess at where the RigidBody subshapes will end up?). It will be nice if one builds a MMO for querying purposes as well. One will keep arrays of pointers here and there, but there are times when it would be nice to make sure one is dealing with the right object. There's GetHashCode but I like human readable data when debugging. It might seem like overkill, but stability, stability, stability. There can be no overkill when it comes to stability.