diff --git a/Ganeti/HTools/Instance.hs b/Ganeti/HTools/Instance.hs
index 4a0816d5f89bfdbff5bc871ad6b8b231b467ca0f..0ec0644d347b2a04a018616b6bce1e94a65fb909 100644
--- a/Ganeti/HTools/Instance.hs
+++ b/Ganeti/HTools/Instance.hs
@@ -48,13 +48,11 @@ data Instance = Instance { name :: String    -- ^ The instance name
                          , mem :: Int        -- ^ Memory of the instance
                          , dsk :: Int        -- ^ Disk size of instance
                          , vcpus :: Int      -- ^ Number of VCPUs
-                         , running :: Bool   -- ^ Whether the instance
-                                             -- is running
+                         , running :: Bool   -- ^ Is the instance running?
                          , runSt :: String   -- ^ Original (text) run status
                          , pNode :: T.Ndx    -- ^ Original primary node
                          , sNode :: T.Ndx    -- ^ Original secondary node
-                         , idx :: T.Idx      -- ^ Internal index for
-                                             -- book-keeping
+                         , idx :: T.Idx      -- ^ Internal index
                          , util :: T.DynUtil -- ^ Dynamic resource usage
                          } deriving (Show)
 
@@ -82,10 +80,7 @@ create name_init mem_init dsk_init vcpus_init run_init pn sn =
              , mem = mem_init
              , dsk = dsk_init
              , vcpus = vcpus_init
-             , running = case run_init of
-                           "running" -> True
-                           "ERROR_up" -> True
-                           _ -> False
+             , running = run_init == "running" || run_init == "ERROR_up"
              , runSt = run_init
              , pNode = pn
              , sNode = sn
diff --git a/Ganeti/HTools/Node.hs b/Ganeti/HTools/Node.hs
index 05f8ba1445967b8586f542ae5fb114dd4a6036db..02a85e4e47851c9634877cb0504fa35b2200ef64 100644
--- a/Ganeti/HTools/Node.hs
+++ b/Ganeti/HTools/Node.hs
@@ -67,7 +67,7 @@ import qualified Ganeti.HTools.Types as T
 -- * Type declarations
 
 -- | The node type.
-data Node = Node { name  :: String -- ^ The node name
+data Node = Node { name :: String  -- ^ The node name
                  , tMem :: Double  -- ^ Total memory (MiB)
                  , nMem :: Int     -- ^ Node memory (MiB)
                  , fMem :: Int     -- ^ Free memory (MiB)
@@ -80,7 +80,7 @@ data Node = Node { name  :: String -- ^ The node name
                  , sList :: [T.Idx]-- ^ List of secondary instance indices
                  , idx :: T.Ndx    -- ^ Internal index for book-keeping
                  , peers :: PeerMap.PeerMap -- ^ Pnode to instance mapping
-                 , failN1:: Bool   -- ^ Whether the node has failed n1
+                 , failN1 :: Bool  -- ^ Whether the node has failed n1
                  , rMem :: Int     -- ^ Maximum memory needed for
                                    -- failover by primaries of this node
                  , pMem :: Double  -- ^ Percent of free memory
@@ -235,8 +235,7 @@ setFmem :: Node -> Int -> Node
 setFmem t new_mem =
     let new_n1 = new_mem <= rMem t
         new_mp = fromIntegral new_mem / tMem t
-    in
-      t { fMem = new_mem, failN1 = new_n1, pMem = new_mp }
+    in t { fMem = new_mem, failN1 = new_n1, pMem = new_mp }
 
 -- | Removes a primary instance.
 removePri :: Node -> Instance.Instance -> Node
@@ -251,9 +250,9 @@ removePri t inst =
         new_ucpu = uCpu t - Instance.vcpus inst
         new_rcpu = fromIntegral new_ucpu / tCpu t
         new_load = utilLoad t `T.subUtil` Instance.util inst
-    in t {pList = new_plist, fMem = new_mem, fDsk = new_dsk,
-          failN1 = new_failn1, pMem = new_mp, pDsk = new_dp,
-          uCpu = new_ucpu, pCpu = new_rcpu, utilLoad = new_load}
+    in t { pList = new_plist, fMem = new_mem, fDsk = new_dsk
+         , failN1 = new_failn1, pMem = new_mp, pDsk = new_dp
+         , uCpu = new_ucpu, pCpu = new_rcpu, utilLoad = new_load }
 
 -- | Removes a secondary instance.
 removeSec :: Node -> Instance.Instance -> Node
@@ -267,19 +266,18 @@ removeSec t inst =
         new_peem =  old_peem - Instance.mem inst
         new_peers = PeerMap.add pnode new_peem old_peers
         old_rmem = rMem t
-        new_rmem = if old_peem < old_rmem then
-                       old_rmem
-                   else
-                       computeMaxRes new_peers
+        new_rmem = if old_peem < old_rmem
+                   then old_rmem
+                   else computeMaxRes new_peers
         new_prem = fromIntegral new_rmem / tMem t
         new_failn1 = fMem t <= new_rmem
         new_dp = fromIntegral new_dsk / tDsk t
         old_load = utilLoad t
         new_load = old_load { T.dskWeight = T.dskWeight old_load -
                                             T.dskWeight (Instance.util inst) }
-    in t {sList = new_slist, fDsk = new_dsk, peers = new_peers,
-          failN1 = new_failn1, rMem = new_rmem, pDsk = new_dp,
-          pRem = new_prem, utilLoad = new_load}
+    in t { sList = new_slist, fDsk = new_dsk, peers = new_peers
+         , failN1 = new_failn1, rMem = new_rmem, pDsk = new_dp
+         , pRem = new_prem, utilLoad = new_load }
 
 -- | Adds a primary instance.
 addPri :: Node -> Instance.Instance -> T.OpResult Node
@@ -300,9 +298,9 @@ addPri t inst =
        else
            let new_plist = iname:pList t
                new_mp = fromIntegral new_mem / tMem t
-               r = t { pList = new_plist, fMem = new_mem, fDsk = new_dsk,
-                       failN1 = new_failn1, pMem = new_mp, pDsk = new_dp,
-                       uCpu = new_ucpu, pCpu = new_pcpu, utilLoad = new_load }
+               r = t { pList = new_plist, fMem = new_mem, fDsk = new_dsk
+                     , failN1 = new_failn1, pMem = new_mp, pDsk = new_dp
+                     , uCpu = new_ucpu, pCpu = new_pcpu, utilLoad = new_load }
            in T.OpGood r
 
 -- | Adds a secondary instance.
@@ -324,11 +322,11 @@ addSec t inst pdx =
     in if new_dsk <= 0 || mDsk t > new_dp then T.OpFail T.FailDisk
        else if new_failn1 && not (failN1 t) then T.OpFail T.FailMem
        else let new_slist = iname:sList t
-                r = t { sList = new_slist, fDsk = new_dsk,
-                        peers = new_peers, failN1 = new_failn1,
-                        rMem = new_rmem, pDsk = new_dp,
-                        pRem = new_prem, utilLoad = new_load }
-           in T.OpGood r
+                r = t { sList = new_slist, fDsk = new_dsk
+                      , peers = new_peers, failN1 = new_failn1
+                      , rMem = new_rmem, pDsk = new_dp
+                      , pRem = new_prem, utilLoad = new_load }
+            in T.OpGood r
 
 -- * Stats functions
 
diff --git a/Ganeti/HTools/PeerMap.hs b/Ganeti/HTools/PeerMap.hs
index 765eb4176d436fd0010ccb67d80ef4a50e30b36f..27e9938696c3fc337f92ec29f260443e44117c8a 100644
--- a/Ganeti/HTools/PeerMap.hs
+++ b/Ganeti/HTools/PeerMap.hs
@@ -64,20 +64,16 @@ pmCompare a b = (compare `on` snd) b a
 -- | Add or update (via a custom function) an element.
 addWith :: (Elem -> Elem -> Elem) -> Key -> Elem -> PeerMap -> PeerMap
 addWith fn k v lst =
-    let r = lookup k lst
-    in
-      case r of
-        Nothing -> insertBy pmCompare (k, v) lst
-        Just o -> insertBy pmCompare (k, fn o v) (remove k lst)
+    case lookup k lst of
+      Nothing -> insertBy pmCompare (k, v) lst
+      Just o -> insertBy pmCompare (k, fn o v) (remove k lst)
 
 -- | Create a PeerMap from an association list, with possible duplicates
 accumArray :: (Elem -> Elem -> Elem) -- ^ function used to merge the elements
               -> [(Key, Elem)]       -- ^ source data
               -> PeerMap             -- ^ results
-accumArray fn lst =
-    case lst of
-      [] -> empty
-      (k, v):xs -> addWith fn k v $ accumArray fn xs
+accumArray _  [] = empty
+accumArray fn ((k, v):xs) = addWith fn k v $ accumArray fn xs
 
 -- * Basic operations
 
@@ -91,9 +87,9 @@ add = addWith (flip const)
 
 -- | Remove an element from a peermap
 remove :: Key -> PeerMap -> PeerMap
-remove k c = case c of
-               [] -> []
-               (x@(x', _)):xs -> if k == x' then xs
+remove _ [] = []
+remove k ((x@(x', _)):xs) = if k == x'
+                            then xs
                             else x:remove k xs
 
 -- | Find the maximum element.
@@ -101,4 +97,5 @@ remove k c = case c of
 -- Since this is a sorted list, we just get the value at the head of
 -- the list, or zero for a null list
 maxElem :: PeerMap -> Elem
-maxElem c = if null c then 0 else snd . head $ c
+maxElem (x:_) = snd x
+maxElem _ = 0