This implementation feels a bit haphazard with all the forces in the `o_*`. Is this stuff all changing dario?