Thanks for the idea. After a little thought I've found the most straight-forward approach is not to return an object at all, but pass the target in the parameters, so
Function create_Box.ODE_object(x_pos, y_pos, z_pos, width, length, depth, x_rot, y_rot, z_rot) obj.ODE_object = New ODE_object obj\mat.material = New material blah blah Return obj End Functionbecomes
Function create_Box(obj.ODE_object, x_pos, y_pos, z_pos, width, length, depth, x_rot, y_rot, z_rot) obj\mat.material = New material blah blah End FunctionI think I'm too 'classically trained' to automatically work with Blitz's ways!