3d refactor