diff --git a/src/Data/Validity/Text.hs b/src/Data/Validity/Text.hs
--- a/src/Data/Validity/Text.hs
+++ b/src/Data/Validity/Text.hs
@@ -35,3 +35,20 @@
               LB.toStrict . SBB.toLazyByteString . mconcat . map SBB.word16LE $
               A.toList arr off len
             ]
+    validate t@(Text arr off len) =
+        mconcat
+            [ len >= 0 <?!> "The length is positive."
+            , off >= 0 <?!> "The offset is positive."
+            , (let c = A.unsafeIndex arr off
+               in len == 0 || c < 0xDC00 || c > 0xDFFF) <?!>
+              "The offset character is valid UTF16."
+                 -- It contains a valid UTF16
+            , ((== (Right t :: Either E.UnicodeException Text)) $
+               U.unsafeDupablePerformIO .
+               try .
+               evaluate .
+               E.decodeUtf16LEWith E.strictDecode .
+               LB.toStrict . SBB.toLazyByteString . mconcat . map SBB.word16LE $
+               A.toList arr off len) <?!>
+              "The bytes can correctly be decoded as UTF16."
+            ]
diff --git a/validity-text.cabal b/validity-text.cabal
--- a/validity-text.cabal
+++ b/validity-text.cabal
@@ -1,5 +1,5 @@
 name: validity-text
-version: 0.1.2.1
+version: 0.2.0.0
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -21,8 +21,8 @@
     exposed-modules:
         Data.Validity.Text
     build-depends:
-        base >= 4.7 && <5,
-        validity -any,
+        base >=4.7 && <5,
+        validity >=0.4 && <0.5,
         text -any,
         bytestring -any
     default-language: Haskell2010
