For your force function, have you considered having a callback one could specify which defaults to nil? That way your update function could check for the existence of the callback, call it if it exists, and otherwise run the internal force logic.