refactor object3d delegates