diff --git a/htest/Test/Ganeti/BasicTypes.hs b/htest/Test/Ganeti/BasicTypes.hs
index 1eab1259cfa5f61272d79327b206cea97bb572fe..a74bc299c1bf75a1fd10416156b161f0d120b72e 100644
--- a/htest/Test/Ganeti/BasicTypes.hs
+++ b/htest/Test/Ganeti/BasicTypes.hs
@@ -45,6 +45,7 @@ import Ganeti.BasicTypes
 {-# ANN module "HLint: ignore Monad law, left identity" #-}
 {-# ANN module "HLint: ignore Monad law, right identity" #-}
 {-# ANN module "HLint: ignore Use >=>" #-}
+{-# ANN module "HLint: ignore Use ." #-}
 
 -- * Arbitrary instances
 
diff --git a/htest/Test/Ganeti/HTools/Loader.hs b/htest/Test/Ganeti/HTools/Loader.hs
index a96aff5b31b8b60e99e38417d5eecf5ae4f0fa61..e825f2bd49d182ca08a2307e52ca57693539e419 100644
--- a/htest/Test/Ganeti/HTools/Loader.hs
+++ b/htest/Test/Ganeti/HTools/Loader.hs
@@ -64,9 +64,7 @@ prop_assignIndices =
         Loader.assignIndices (map (\n -> (Node.name n, n)) nodes)
   in Map.size nassoc == length nodes &&
      Container.size kt == length nodes &&
-     if not (null nodes)
-       then maximum (IntMap.keys kt) == length nodes - 1
-       else True
+     (null nodes || maximum (IntMap.keys kt) == length nodes - 1)
 
 -- | Checks that the number of primary instances recorded on the nodes
 -- is zero.
diff --git a/htools/Ganeti/HTools/Cluster.hs b/htools/Ganeti/HTools/Cluster.hs
index 82d47574b07014db586ff71cf3ec345711b22842..2f83e15a47cf8bd3f9ab222a30ec3da9faa1efe5 100644
--- a/htools/Ganeti/HTools/Cluster.hs
+++ b/htools/Ganeti/HTools/Cluster.hs
@@ -828,11 +828,11 @@ findBestAllocGroup mggl mgnl mgil allowed_gdxs inst cnt =
       goodSols = filterMGResults mggl sols
       sortedSols = sortMGResults mggl goodSols
   in if null sortedSols
-       then if null groups'
-              then Bad $ "no groups for evacuation: allowed groups was" ++
-                     show allowed_gdxs ++ ", all groups: " ++
-                     show (map fst groups)
-              else Bad $ intercalate ", " all_msgs
+       then Bad $ if null groups'
+                    then "no groups for evacuation: allowed groups was" ++
+                         show allowed_gdxs ++ ", all groups: " ++
+                         show (map fst groups)
+                    else intercalate ", " all_msgs
        else let (final_group, final_sol) = head sortedSols
             in return (final_group, final_sol, all_msgs)
 
diff --git a/htools/Ganeti/HTools/Program/Hcheck.hs b/htools/Ganeti/HTools/Program/Hcheck.hs
index f02b52adb2702ff7dd54a091754d79d608972beb..fb59094786c235920cacb103c76f69a9a200c1b4 100644
--- a/htools/Ganeti/HTools/Program/Hcheck.hs
+++ b/htools/Ganeti/HTools/Program/Hcheck.hs
@@ -312,12 +312,12 @@ main opts args = do
       clusterstats = map sum . transpose . map snd $ groupsstats
       needrebalance = clusterNeedsRebalance clusterstats
 
-  unless (verbose == 0 || machineread) $
-    if nosimulation
-      then putStrLn "Running in no-simulation mode."
-      else if needrebalance
-             then putStrLn "Cluster needs rebalancing."
-             else putStrLn "No need to rebalance cluster, no problems found."
+  unless (verbose == 0 || machineread) .
+    putStrLn $ if nosimulation
+                 then "Running in no-simulation mode."
+                 else if needrebalance
+                        then "Cluster needs rebalancing."
+                        else "No need to rebalance cluster, no problems found."
 
   mapM_ (printGroupStats verbose machineread Initial) groupsstats
 
diff --git a/htools/Ganeti/Luxi.hs b/htools/Ganeti/Luxi.hs
index 2086a0eefd418dea3d0b4b51e87efe1f18e68835..92d77eb68cd414675429fdcdb0dab09c829e3749 100644
--- a/htools/Ganeti/Luxi.hs
+++ b/htools/Ganeti/Luxi.hs
@@ -287,9 +287,9 @@ recvMsg s = do
 recvMsgExt :: Client -> IO RecvResult
 recvMsgExt s =
   catch (liftM RecvOk (recvMsg s)) $ \e ->
-    if isEOFError e
-      then return RecvConnClosed
-      else return $ RecvError (show e)
+    return $ if isEOFError e
+               then RecvConnClosed
+               else RecvError (show e)
 
 -- | Serialize a request to String.
 buildCall :: LuxiOp  -- ^ The method