Laurent, have you ever consider Shape::Compile() method to be public instead of private? I think, that Shape Compile() method should be public rather than private. If someone create his own shape it can be compiled only at render time. I think that user should have possibility to compile shape by himself. Plus in Java binding when I create predefined shapes I have to rewrite these static methods because those return object instead of pointer and these Shapes are not compiled (I cannot rewrite compile method because this method operate on private myPoints) - so there is difference between Java and C++ Shapes. I know that this is minor issue, but what do you think about it?