Factor out Vec3D and DefaultVec3D.
DefaultVec3D can now be constructed using a call to the Vec3D apply method.