diff --git a/Tainted.cabal b/Tainted.cabal
--- a/Tainted.cabal
+++ b/Tainted.cabal
@@ -2,9 +2,8 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                Tainted
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            Tainted type, and associated operations
-description:            Tainted type, and associated operations
 homepage:            https://github.com/RossMeikleham/Tainted
 license:             BSD3
 license-file:        LICENSE
@@ -18,6 +17,18 @@
     .gitignore
     .travis.yml
     README.md
+    examples/TaintedExample.hs
+    examples/TransExample.hs
+
+description:    
+    A Tainted type contains either a clean or dirty value. Values which are
+    clean stay clean as long as an operation performed on them results
+    in a clean value. If combined with a dirty value, the value becomes
+    tainted as dirty and remains that way through further operations.
+   
+    This package contains implementations of the Tainted Monad as well as
+    TaintedT (the Tainted Monad Transformer), as well as examples of using
+    each of them.
 
 
 source-repository head 
diff --git a/examples/TaintedExample.hs b/examples/TaintedExample.hs
new file mode 100644
--- /dev/null
+++ b/examples/TaintedExample.hs
@@ -0,0 +1,30 @@
+module TaintedExample where
+
+import Data.Tainted
+import Control.Monad
+
+data Expr = 
+      Number (Tainted Int)
+    | Add Expr Expr
+    
+    deriving Show
+
+pure1   = Number (Clean 3)
+pure2   = Number (Clean 7)
+impure1 = Number (Dirty 5)
+
+expr1 = Add pure1 pure2
+expr2 = Add impure1 pure1
+expr3 = Add pure1 (Add impure1 pure2) 
+
+--Evaluate expression as much as Possible
+evalExpr :: Expr -> Expr
+evalExpr (Number n) = Number n
+evalExpr (Add e1 e2) = 
+    case (evalExpr e1, evalExpr e2) of
+        (Number i, Number j) -> Number $ liftM2 (+) i j
+        (x, y) -> Add x y
+
+reducedExpr1 = evalExpr expr1
+reducedExpr2 = evalExpr expr2
+reducedExpr3 = evalExpr expr3
diff --git a/examples/TransExample.hs b/examples/TransExample.hs
new file mode 100644
--- /dev/null
+++ b/examples/TransExample.hs
@@ -0,0 +1,38 @@
+module TaintTransformerExample where
+
+import Data.Tainted
+import Control.Monad.Trans.Tainted
+import Control.Monad.State
+
+type TaintedState a b = TaintedT (State a) b
+
+doStuff :: Int -> (TaintedState Int Int) -> Tainted Int
+doStuff n f = evalState (runTainted f) n
+    
+
+f :: TaintedState Int Int
+f = do
+    x <- lift get
+    return $ x + 6
+
+
+g :: TaintedState Int Int
+g = do
+    x <- lift get
+    y <- hoistTainted $ Dirty 6
+    return $ x + y
+
+
+h :: TaintedState Int Int
+h = do
+    x <- lift get
+    lift $ put (x + 1)
+    y <- hoistTainted $ Dirty 7
+    z <- lift get
+    return $ x + y + z
+
+
+ex1 = doStuff 5 f 
+ex2 = doStuff 5 g 
+ex3 = doStuff 5 h
+
