refactor ThreeDimensionsObject, using c++ delegating constructors