diff --git a/Ganeti/HTools/Luxi.hs b/Ganeti/HTools/Luxi.hs
index de83d6cb58a132b348826fc9fa778a8a9f526e1f..27d23a56cc3b57f812643d069b3b65454c9d3cbf 100644
--- a/Ganeti/HTools/Luxi.hs
+++ b/Ganeti/HTools/Luxi.hs
@@ -93,7 +93,8 @@ getInstances ktn arr = toArray arr >>= mapM (parseInstance ktn)
 parseInstance :: [(String, Ndx)]
               -> JSValue
               -> Result (String, Instance.Instance)
-parseInstance ktn (JSArray (name:disk:mem:vcpus:status:pnode:snodes:[])) = do
+parseInstance ktn (JSArray [ name, disk, mem, vcpus
+                           , status, pnode, snodes ]) = do
   xname <- annotateResult "Parsing new instance" (fromJVal name)
   let convert v = annotateResult ("Instance '" ++ xname ++ "'") (fromJVal v)
   xdisk <- convert disk
@@ -115,8 +116,8 @@ getNodes arr = toArray arr >>= mapM parseNode
 
 -- | Construct a node from a JSON object.
 parseNode :: JSValue -> Result (String, Node.Node)
-parseNode (JSArray
-           (name:mtotal:mnode:mfree:dtotal:dfree:ctotal:offline:drained:[]))
+parseNode (JSArray [ name, mtotal, mnode, mfree, dtotal, dfree
+                   , ctotal, offline, drained ])
     = do
   xname <- annotateResult "Parsing new node" (fromJVal name)
   let convert v = annotateResult ("Node '" ++ xname ++ "'") (fromJVal v)
diff --git a/Ganeti/HTools/Text.hs b/Ganeti/HTools/Text.hs
index 5fae5aa25b477f5084dee9befa9fa0a7ffc27619..69737a8a0356cf5d59c1c43b6142d2b7bfbcf388 100644
--- a/Ganeti/HTools/Text.hs
+++ b/Ganeti/HTools/Text.hs
@@ -42,7 +42,7 @@ import qualified Ganeti.HTools.Instance as Instance
 
 -- | Load a node from a field list.
 loadNode :: (Monad m) => [String] -> m (String, Node.Node)
-loadNode (name:tm:nm:fm:td:fd:tc:fo:[]) = do
+loadNode [name, tm, nm, fm, td, fd, tc, fo] = do
   new_node <-
       if any (== "?") [tm,nm,fm,td,fd,tc] || fo == "Y" then
           return $ Node.create name 0 0 0 0 0 0 True
@@ -60,7 +60,7 @@ loadNode s = fail $ "Invalid/incomplete node data: '" ++ show s ++ "'"
 -- | Load an instance from a field list.
 loadInst :: (Monad m) =>
             [(String, Ndx)] -> [String] -> m (String, Instance.Instance)
-loadInst ktn (name:mem:dsk:vcpus:status:pnode:snode:[]) = do
+loadInst ktn [name, mem, dsk, vcpus, status, pnode, snode] = do
   pidx <- lookupNode ktn name pnode
   sidx <- (if null snode then return Node.noSecondary
            else lookupNode ktn name snode)