diff --git a/Ganeti/HTools/IAlloc.hs b/Ganeti/HTools/IAlloc.hs
index 241bbd8508c28eafc78dc683a9ffd8da2264912d..8803a0ceb4a0fc35b37c21e37f90ae6e2e1796b9 100644
--- a/Ganeti/HTools/IAlloc.hs
+++ b/Ganeti/HTools/IAlloc.hs
@@ -26,7 +26,7 @@ data RqType
     | Relocate Int
     deriving (Show)
 
-data Request = Request RqType IdxNode IdxInstance NameList NameList
+data Request = Request RqType NodeList InstanceList String NameList NameList
     deriving (Show)
 
 parseBaseInstance :: String
@@ -101,8 +101,8 @@ parseData body = do
               ridx <- lookupNode kti rname rname
               return $ Relocate ridx
         other -> fail $ ("Invalid request type '" ++ other ++ "'")
-
-  return $ Request rqtype nl il (swapPairs ktn) (swapPairs kti)
+  (map_n, map_i, csf, xtn, xti) <- mergeData (ktn, nl, kti, il)
+  return $ Request rqtype map_n map_i csf xtn xti
 
 formatResponse :: Bool -> String -> [String] -> String
 formatResponse success info nodes =
diff --git a/Ganeti/HTools/Loader.hs b/Ganeti/HTools/Loader.hs
index 4f6359c6a605f3d8c4930f94a8d1a60449d5b703..1346867e1f8e1dcf5261108e73d4545c7e8f4a82 100644
--- a/Ganeti/HTools/Loader.hs
+++ b/Ganeti/HTools/Loader.hs
@@ -9,7 +9,6 @@ module Ganeti.HTools.Loader
     , checkData
     , assignIndices
     , lookupNode
-    , swapPairs
     ) where
 
 import Data.List