diff --git a/cabal-lenses.cabal b/cabal-lenses.cabal
--- a/cabal-lenses.cabal
+++ b/cabal-lenses.cabal
@@ -1,5 +1,5 @@
 name: cabal-lenses
-version: 0.2
+version: 0.3
 cabal-version: >=1.9.2
 build-type: Simple
 license: BSD3
@@ -21,7 +21,7 @@
 library
     build-depends:
         base >=3 && <5,
-        lens >=4.0.1 && <4.3,
+        lens >=4.0.1 && <4.4,
         unordered-containers >=0.2.3.3 && <0.3,
         Cabal >=1.16.0 && <1.21
     exposed-modules:
diff --git a/lib/CabalLenses/Traversals/Dependency.hs b/lib/CabalLenses/Traversals/Dependency.hs
--- a/lib/CabalLenses/Traversals/Dependency.hs
+++ b/lib/CabalLenses/Traversals/Dependency.hs
@@ -1,7 +1,9 @@
 {-# LANGUAGE Rank2Types #-}
 
 module CabalLenses.Traversals.Dependency
-   ( dependency
+   ( allDependency
+   , allDependencyIf
+   , dependency
    , dependencyIf
    ) where
 
@@ -10,10 +12,33 @@
 import CabalLenses.CondVars (CondVars)
 import CabalLenses.PackageDescription
 import Control.Lens
-import Distribution.PackageDescription (GenericPackageDescription)
+import Control.Applicative ((<$>), (<*>), pure)
+import Distribution.PackageDescription (GenericPackageDescription(GenericPackageDescription))
 import Distribution.Package (Dependency)
 
 
+-- | A traversal for all 'Dependency' of all 'Section'.
+allDependency :: Traversal' GenericPackageDescription Dependency
+allDependency f (GenericPackageDescription descrp flags lib exes tests benchs) =
+   GenericPackageDescription <$> pure descrp
+                             <*> pure flags
+                             <*> (_Just . traverseDependency) f lib
+                             <*> (traverse . _2 . traverseDependency) f exes
+                             <*> (traverse . _2 . traverseDependency) f tests
+                             <*> (traverse . _2 . traverseDependency) f benchs
+
+
+-- | A traversal for all 'Dependency' of all 'Section' that match 'CondVars'.
+allDependencyIf :: CondVars -> Traversal' GenericPackageDescription Dependency
+allDependencyIf condVars f (GenericPackageDescription descrp flags lib exes tests benchs) =
+   GenericPackageDescription <$> pure descrp
+                             <*> pure flags
+                             <*> (_Just . traverseDependencyIf condVars) f lib
+                             <*> (traverse . _2 . traverseDependencyIf condVars) f exes
+                             <*> (traverse . _2 . traverseDependencyIf condVars) f tests
+                             <*> (traverse . _2 . traverseDependencyIf condVars) f benchs
+
+
 -- | A traversal for all 'Dependency' of 'Section'.
 dependency :: Section -> Traversal' GenericPackageDescription Dependency
 dependency Library           = condLibraryL . _Just . traverseDependency
@@ -30,4 +55,4 @@
 dependencyIf condVars (Benchmark name)  = condBenchmarksL . traverse . having name . _2 . traverseDependencyIf condVars
 
 
-having name = filtered ((== name) . fst) 
+having name = filtered ((== name) . fst)
diff --git a/lib/CabalLenses/Version.hs b/lib/CabalLenses/Version.hs
--- a/lib/CabalLenses/Version.hs
+++ b/lib/CabalLenses/Version.hs
@@ -6,10 +6,31 @@
 
 module CabalLenses.Version where
 
-import Distribution.Version (Version(..))
-import Control.Lens (makeLensesFor)
+import Distribution.Version
+import Control.Lens
+import Data.Maybe (fromMaybe)
+import Control.Applicative ((<$>))
 
 
 makeLensesFor [ ("versionBranch", "versionBranchL")
               , ("versionTags"  , "versionTagsL")
               ] ''Version
+
+
+rangeToIntervals :: Iso' VersionRange [VersionInterval]
+rangeToIntervals = iso asVersionIntervals toVersionRange
+   where
+      toVersionRange intervals =
+         fromMaybe anyVersion (fromVersionIntervals <$> mkVersionIntervals intervals)
+
+
+lowerBound :: Lens' VersionInterval LowerBound
+lowerBound = _1
+
+
+upperBound :: Lens' VersionInterval UpperBound
+upperBound = _2
+
+
+noLowerBound :: LowerBound
+noLowerBound = LowerBound (Version [0] []) InclusiveBound
