diff --git a/Distribution/Client/Configure.hs b/Distribution/Client/Configure.hs
--- a/Distribution/Client/Configure.hs
+++ b/Distribution/Client/Configure.hs
@@ -49,6 +49,8 @@
 import Distribution.Verbosity as Verbosity
          ( Verbosity )
 
+import Data.Monoid (Monoid(..))
+
 -- | Configure the package found in the local directory
 configure :: Verbosity
           -> PackageDBStack
@@ -121,7 +123,7 @@
                  -> AvailablePackageDb
                  -> IO (Progress String String InstallPlan)
 planLocalPackage verbosity comp configFlags configExFlags installed
-  availabledb = do
+  (AvailablePackageDb _ availablePrefs) = do
   pkg <- readPackageDescription verbosity =<< defaultPackageDesc verbosity
 
   let -- We create a local package and ask to resolve a dependency on it
@@ -148,8 +150,10 @@
             [ PackageFlagsConstraint (packageName pkg)
                                      (configConfigurationsFlags configFlags) ]
 
-        $ standardInstallPolicy installed availabledb
-                                [SpecificSourcePackage localPkg]
+        $ standardInstallPolicy
+            installed
+            (AvailablePackageDb mempty availablePrefs)
+            [SpecificSourcePackage localPkg]
 
   return (resolveDependencies buildPlatform (compilerId comp) resolverParams)
 
diff --git a/Distribution/Client/Targets.hs b/Distribution/Client/Targets.hs
--- a/Distribution/Client/Targets.hs
+++ b/Distribution/Client/Targets.hs
@@ -202,13 +202,17 @@
    | UserTargetUnexpectedUriScheme String
    | UserTargetUnrecognisedUri     String
    | UserTargetUnrecognised        String
+   | UserTargetBadWorldPkg
   deriving Show
 
 readUserTarget :: String -> IO (Either UserTargetProblem UserTarget)
 readUserTarget targetstr =
     case testNamedTargets targetstr of
-      Just target -> return target
-      Nothing     -> do
+      Just (Dependency (PackageName "world") verrange)
+        | verrange == anyVersion -> return (Right UserTargetWorld)
+        | otherwise              -> return (Left  UserTargetBadWorldPkg)
+      Just dep                   -> return (Right (UserTargetNamed dep))
+      Nothing -> do
         fileTarget <- testFileTargets targetstr
         case fileTarget of
           Just target -> return target
@@ -217,8 +221,7 @@
               Just target -> return target
               Nothing     -> return (Left (UserTargetUnrecognised targetstr))
   where
-    testNamedTargets = fmap (Right . UserTargetNamed)
-                     . readPToMaybe parseDependencyOrPackageId
+    testNamedTargets = readPToMaybe parseDependencyOrPackageId
 
     testFileTargets filename = do
       isDir  <- doesDirectoryExist filename
@@ -291,6 +294,10 @@
              ++ " - the special 'world' target\n"
              ++ " - cabal files 'pkgname.cabal' or package directories 'pkgname/'\n"
              ++ " - package tarballs 'pkgname.tar.gz' or 'http://example.com/pkgname.tar.gz'"
+
+    case [ () | UserTargetBadWorldPkg <- problems ] of
+      [] -> return ()
+      _  -> die "The special 'world' target does not take any version."
 
     case [ target | UserTargetNonexistantFile target <- problems ] of
       []     -> return ()
diff --git a/cabal-install.cabal b/cabal-install.cabal
--- a/cabal-install.cabal
+++ b/cabal-install.cabal
@@ -1,5 +1,5 @@
 Name:               cabal-install
-Version:            0.10.0
+Version:            0.10.2
 Synopsis:           The command-line interface for Cabal and Hackage.
 Description:
     The \'cabal\' command-line program simplifies the process of managing
