diff --git a/hs-inspector.cabal b/hs-inspector.cabal
--- a/hs-inspector.cabal
+++ b/hs-inspector.cabal
@@ -2,7 +2,7 @@
 --  http://haskell.org/cabal/users-guide/
 
 name:                hs-inspector
-version:             0.1.0.0
+version:             0.2.0.0
 license:             MIT
 license-file:        LICENSE
 author:              Franco Leonardo Bulgarelli
diff --git a/src/Language/Haskell/Inspector.hs b/src/Language/Haskell/Inspector.hs
--- a/src/Language/Haskell/Inspector.hs
+++ b/src/Language/Haskell/Inspector.hs
@@ -11,21 +11,57 @@
 type Code = String
 type Inspection = Binding -> Code  -> Bool
 
+-- | Inspection that tells whether a binding uses the composition operator '.'
+-- in its definition
 hasComposition :: Inspection
 hasComposition = testAnyWithBindingExpr f
   where f (O (HsQVarOp (UnQual (HsSymbol ".")))) = True
         f _ = False
 
+-- | Inspection that tells whether a binding uses guards
+-- in its definition
 hasGuards :: Inspection
 hasGuards = testAnyWithBindingRhs f
   where f (HsGuardedRhss _) = True
         f _ = False
 
+
+-- | Inspection that tells whether a binding uses a lambda expression
+-- in its definition
 hasLambda :: Inspection
 hasLambda = testAnyWithBindingExpr f
   where f (E (HsLambda _ _ _)) = True
         f _ = False
 
+
+-- | Inspection that tells whether a binding is direct recursive
+hasDirectRecursion :: Inspection
+hasDirectRecursion binding = hasUsage binding binding
+
+
+-- | Inspection that tells whether a binding uses the the given target binding
+-- in its definition
+hasUsage :: String -> Inspection
+hasUsage target = testAnyWithBindingExpr f
+  where f (O (HsQVarOp name)) = isTarget name
+        f (E (HsVar    name)) = isTarget name
+        f _ = False
+
+        isTarget (Qual  _ (HsSymbol target)) = True
+        isTarget (Qual  _ (HsIdent  target)) = True
+        isTarget (UnQual  (HsSymbol target)) = True
+        isTarget (UnQual  (HsIdent  target)) = True
+        isTarget _                           = False
+
+
+-- | Inspection that tells whether a binding uses lists comprehensions
+-- in its definition
+hasComprehension :: Inspection
+hasComprehension = testAnyWithBindingExpr f
+  where f (E (HsListComp _ _)) = True
+        f _ = False
+
+-- | Inspection that tells whether a top level binding exists
 hasBinding :: Inspection
 hasBinding binding = isJust . findBindingRhs binding
 
