diff --git a/cabal-install/Distribution/Client/InstallPlan.hs b/cabal-install/Distribution/Client/InstallPlan.hs
index 1c99d1779965a0b8a8d19bed4c812ae3408b9d08..fbc923265d54688e913a8ad6b5400ae8b030872b 100644
--- a/cabal-install/Distribution/Client/InstallPlan.hs
+++ b/cabal-install/Distribution/Client/InstallPlan.hs
@@ -28,6 +28,7 @@ module Distribution.Client.InstallPlan (
   new,
   toList,
   planIndepGoals,
+  depends,
 
   fromSolverInstallPlan,
   configureInstallPlan,
@@ -161,6 +162,9 @@ data GenericPlanPackage ipkg srcpkg
 
 type IsUnit a = (IsNode a, Key a ~ UnitId)
 
+depends :: IsUnit a => a -> [UnitId]
+depends = nodeNeighbors
+
 -- NB: Expanded constraint synonym here to avoid undecidable
 -- instance errors in GHC 7.8 and earlier.
 instance (IsNode ipkg, IsNode srcpkg, Key ipkg ~ UnitId, Key srcpkg ~ UnitId)
diff --git a/cabal-install/Distribution/Client/ProjectBuilding.hs b/cabal-install/Distribution/Client/ProjectBuilding.hs
index 4d56fa93b72e64f546cfa87dd64b13d90ea6bd62..1dc4e2e0278df34fd14b5b8990002dddd3fd0929 100644
--- a/cabal-install/Distribution/Client/ProjectBuilding.hs
+++ b/cabal-install/Distribution/Client/ProjectBuilding.hs
@@ -351,7 +351,7 @@ foldMInstallPlanDepOrder plan0 visit =
           depresults =
             map (\ipkgid -> let Just result = Map.lookup ipkgid results
                               in result)
-                (nodeNeighbors pkg)
+                (InstallPlan.depends pkg)
       result <- visit pkg depresults
       let results' = Map.insert (nodeKey pkg) result results
       go results' pkgs
diff --git a/cabal-install/Distribution/Client/ProjectPlanning.hs b/cabal-install/Distribution/Client/ProjectPlanning.hs
index c2f01ad2bcde717c5bfbacc7e22e069c89609d3b..3538320903332872353643a261fb031a385ebef7 100644
--- a/cabal-install/Distribution/Client/ProjectPlanning.hs
+++ b/cabal-install/Distribution/Client/ProjectPlanning.hs
@@ -1744,9 +1744,10 @@ pruneInstallPlanPass1 perPkgTargetsMap pkgs =
     -- stanzas in the next pass.
     --
     pruneOptionalDependencies :: ElaboratedConfiguredPackage -> [UnitId]
-    pruneOptionalDependencies elab@ElaboratedConfiguredPackage{ elabPkgOrComp = ElabComponent _ } = nodeNeighbors elab -- no pruning
-    pruneOptionalDependencies ElaboratedConfiguredPackage{ elabPkgOrComp = ElabPackage pkg } =
-        (CD.flatDeps . CD.filterDeps keepNeeded) (pkgOrderDependencies pkg)
+    pruneOptionalDependencies elab@ElaboratedConfiguredPackage{ elabPkgOrComp = ElabComponent _ }
+        = InstallPlan.depends elab -- no pruning
+    pruneOptionalDependencies ElaboratedConfiguredPackage{ elabPkgOrComp = ElabPackage pkg }
+        = (CD.flatDeps . CD.filterDeps keepNeeded) (pkgOrderDependencies pkg)
       where
         keepNeeded (CD.ComponentTest  _) _ = TestStanzas  `Set.member` stanzas
         keepNeeded (CD.ComponentBench _) _ = BenchStanzas `Set.member` stanzas
@@ -1865,7 +1866,7 @@ pruneInstallPlanPass2 pkgs =
     hasReverseLibDeps :: Set UnitId
     hasReverseLibDeps =
       Set.fromList [ depid | pkg <- pkgs
-                           , depid <- nodeNeighbors pkg ]
+                           , depid <- InstallPlan.depends pkg ]
 
 mapConfiguredPackage :: (srcpkg -> srcpkg')
                      -> InstallPlan.GenericPlanPackage ipkg srcpkg
@@ -2211,7 +2212,7 @@ setupHsConfigureFlags (ReadyPackage elab@ElaboratedConfiguredPackage{..})
 
     -- we only use configDependencies, unless we're talking to an old Cabal
     -- in which case we use configConstraints
-    -- NB: This does NOT use nodeNeighbors, which includes executable
+    -- NB: This does NOT use InstallPlan.depends, which includes executable
     -- dependencies which should NOT be fed in here (also you don't have
     -- enough info anyway)
     configDependencies        = [ (packageName srcid, cid)