diff --git a/data-checked.cabal b/data-checked.cabal
--- a/data-checked.cabal
+++ b/data-checked.cabal
@@ -1,5 +1,5 @@
 Name: data-checked
-Version: 0.1
+Version: 0.2
 Category: Data
 Stability: experimental
 Synopsis: Type-indexed runtime-checked properties 
@@ -24,8 +24,8 @@
   Location: https://github.com/mvv/data-checked.git
 
 Library
-  Build-Depends:
-    base >= 4 && < 5
+  Build-Depends: base >= 4 && < 5
+               , deepseq >= 1.2
   Hs-Source-Dirs: src
   GHC-Options: -Wall
   Exposed-Modules:
diff --git a/src/Data/Checked.hs b/src/Data/Checked.hs
--- a/src/Data/Checked.hs
+++ b/src/Data/Checked.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 
@@ -6,19 +7,37 @@
 module Data.Checked
   ( Checked
   , trustMe
+  , trustThat
+  , trustMap
   , checked
   , Property(..)
   , maybeHolds
   , check
   ) where
 
+import Data.Typeable (Typeable)
+import Control.DeepSeq (NFData(..))
+
 -- | Wrapper-evidence for property /p/.
-newtype Checked p v = Checked v
+newtype Checked p v = Checked v deriving Typeable
 
+instance NFData v ⇒ NFData (Checked p v) where
+  rnf (Checked v) = rnf v
+
 -- | Use when the property can be deduced without a runtime check.
 trustMe ∷ v → Checked p v
 trustMe = Checked
 {-# INLINE trustMe #-}
+
+-- | Use when the property can be deduced without a runtime check.
+trustThat ∷ p → v → Checked p v
+trustThat _ = Checked
+{-# INLINE trustThat #-}
+
+-- | Apply a fuction that preserves the property to the checked value.
+trustMap ∷ (v → v) → Checked p v → Checked p v
+trustMap f (Checked v) = Checked (f v)
+{-# INLINE trustMap #-}
 
 -- | Unwrap the checked value.
 checked ∷ Checked p v → v
