I didn't quite get this. Why would anyone want to exchange physics or even collisiondetectors now (or in other words: why are they referenced to via pointers and not normal members)? They have well defined and specific behaviour imo (That's why I wouldn't see sense/need in subclassing them).