Just thought of something that might help to deal with dependency nuisance:
What if the top package (in namespace) contained major version?
E.g. Cabal_1_22
below packages might use minor versions - basically, whenever api changes, change the version part of the affected package.
Here by package I mean part of the namespace.
This way, different versions could coexist quite painlessly..
?