diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+1.1.0
+-----
+* By default 'update' now only widens the lower and upper bounds.
+  So it's easier to raise the upper bounds by just calling
+  'cabal install --allow-newer' and then 'cabal-bounds update'.
+
 1.0.4
 -----
 * Raise upper bounds of dependencies
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -34,20 +34,21 @@
     # update the version infos of all libraries
     $> cabal update
 
-    # drops the upper bound of all dependencies of the cabal file in the working directory
-    $> cabal-bounds drop --upper
-
     # create a cabal sandbox for building your project, this ensures that you're really using
     # the newest available versions of the dependencies, otherwise you would be constraint
     # to the already installed versions
     $> cabal sandbox init
       
-    # build your project
-    $> cabal install
+    # build your project and allow newer library versions used as specified by the cabal file.
+    $> cabal install --allow-newer
 
     # update the upper bound of all dependencies of the cabal file in the working directory
+    # if their upper bound is lower then the version used by the build
     $> cabal-bounds update --upper
 
+If you're leaving out the `--upper` flag then `update` will widen the bounds on both directions.
+So the upper bound will only be updated it it's lower and the lower bound only if it's greater.
+
 Example: Update Bounds by Haskell Platform
 ==========================================
 
@@ -70,16 +71,8 @@
 
     # build and test the project
 
-    # initialize the lower bounds of libraries not present in the haskell platform
-    $> cabal-bounds update --lower --missing
-
-    # drop the upper bounds to test your project with the newest available library versions
-    $> cabal-bounds drop --upper
-
-    # build and test the project
-
-    # set the upper bounds to the ones used in the current build
-    $> cabal-bounds update --upper
+    # initialize the bounds not present in the haskell platform
+    $> cabal-bounds update
 
 Example: Update Bounds by File
 ==============================
diff --git a/cabal-bounds.cabal b/cabal-bounds.cabal
--- a/cabal-bounds.cabal
+++ b/cabal-bounds.cabal
@@ -1,5 +1,5 @@
 name: cabal-bounds
-version: 1.0.5
+version: 1.1.0
 cabal-version: >=1.9.2
 build-type: Simple
 license: BSD3
diff --git a/lib/CabalBounds/Update.hs b/lib/CabalBounds/Update.hs
--- a/lib/CabalBounds/Update.hs
+++ b/lib/CabalBounds/Update.hs
@@ -48,7 +48,7 @@
             lowerVersion <- HM.lookup pkgName_ libs
             let newLowerVersion = comp `compOf` lowerVersion
                 newLowerBound   = V.LowerBound newLowerVersion V.InclusiveBound
-                newIntervals    = (versionRange_ ^. CL.intervals) & _head . CL.lowerBound .~ newLowerBound
+                newIntervals    = (versionRange_ ^. CL.intervals) & _head . CL.lowerBound %~ updateIf (>) newLowerBound
                 vrange          = fromMaybe (V.orLaterVersion newLowerVersion) (mkVersionRange newIntervals)
             return $ dep & CL.versionRange .~ vrange
    where
@@ -56,6 +56,11 @@
       versionRange_ = dep ^. CL.versionRange
       lowerBound_   = fromMaybe CL.noLowerBound $ versionRange_ ^? CL.intervals . _head . CL.lowerBound
 
+      updateIf f newBound oldBound
+         | f oldBound newBound = newBound
+         | otherwise           = oldBound
+
+
 updateDependency (UpdateUpper comp ifMissing) libs dep =
    fromMaybe dep $
       if ifMissing && upperBound_ /= V.NoUpperBound
@@ -64,13 +69,17 @@
             upperVersion <- HM.lookup pkgName_ libs
             let newUpperVersion = nextVersion comp upperVersion
                 newUpperBound   = V.UpperBound newUpperVersion V.ExclusiveBound
-                newIntervals    = (versionRange_ ^. CL.intervals) & _last . CL.upperBound .~ newUpperBound
+                newIntervals    = (versionRange_ ^. CL.intervals) & _last . CL.upperBound %~ updateIf (<) newUpperBound
                 vrange          = fromMaybe (V.earlierVersion newUpperVersion) (mkVersionRange newIntervals)
             return $ dep & CL.versionRange .~ vrange
    where
       versionRange_ = dep ^. CL.versionRange
       pkgName_      = dep ^. CL.packageName . _Wrapped
       upperBound_   = fromMaybe V.NoUpperBound $ versionRange_ ^? CL.intervals . _last . CL.upperBound
+
+      updateIf f newBound oldBound
+         | f oldBound newBound = newBound
+         | otherwise           = oldBound
 
 updateDependency (UpdateBoth lowerComp upperComp ifMissing) libs dep =
     updateDependency (UpdateLower lowerComp ifMissing) libs $
diff --git a/tests/goldenFiles/UpdateByHaskellPlatform.cabal b/tests/goldenFiles/UpdateByHaskellPlatform.cabal
--- a/tests/goldenFiles/UpdateByHaskellPlatform.cabal
+++ b/tests/goldenFiles/UpdateByHaskellPlatform.cabal
@@ -17,7 +17,7 @@
         A >=0.1 && <0.2,
         B >=0.2 && <0.3,
         C >=0.1 && <0.4,
-        directory >=1.2.0.1 && <1.3
+        directory >=1.0 && <1.3
     hs-source-dirs: src
     other-modules:
         Paths_setup_config
