I do all my calculations on specific classes on separate functions, but just call them from the parent (pawn) class. While sub-stepping happens on it’s own thread, this isn’t an issue as long you take it into account on your implementation. You could make delegates to the components directly but it would be harder to handle the execution order for certain things. For example I still measure suspension compression for each wheel first and after that start calculating needed forces using up-to-date values.