The fiddliness isn't necessarily fixable though, at least in business code. The code has to represent the real-world, and if the real-world is fiddly then the code must be fiddly too. The only way to 'fix' this is to restrict your code's representation of the world to some non-fiddly sub-set, but this isn't always possible.