diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -22,11 +22,13 @@
 # Examples
 
 ```haskell
+import Control.Lens.Regex.Text
+
 txt :: Text
 txt = "raindrops on roses and whiskers on kittens"
 
 -- Search
->>> has [regex|whisk|] . match txt
+>>> has [regex|whisk|] txt
 True
 
 -- Get matches
diff --git a/lens-regex-pcre.cabal b/lens-regex-pcre.cabal
--- a/lens-regex-pcre.cabal
+++ b/lens-regex-pcre.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: d1c8fcf51e5b49738911f4885c246d4f3a9e709234fad2feefcd25246e284ac2
+-- hash: 754b704711197304d9dc42fd95daa8ff18d78f8327f4dffac02d893d13ac7ac6
 
 name:           lens-regex-pcre
-version:        1.1.0.0
+version:        1.1.1.0
 synopsis:       A lensy interface to regular expressions
 description:    Please see the README on GitHub at <https://github.com/ChrisPenner/lens-regex-pcre#readme>
 category:       Regex
diff --git a/src/Control/Lens/Regex/ByteString.hs b/src/Control/Lens/Regex/ByteString.hs
--- a/src/Control/Lens/Regex/ByteString.hs
+++ b/src/Control/Lens/Regex/ByteString.hs
@@ -15,6 +15,7 @@
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE TupleSections #-}
+{-# LANGUAGE DerivingStrategies #-}
 
 module Control.Lens.Regex.ByteString
     (
@@ -62,12 +63,30 @@
 type MatchRange = (Int, Int)
 type GroupRanges = [(Int, Int)]
 
+unBuilder :: BS.Builder -> BS.ByteString
+unBuilder = BL.toStrict . BS.toLazyByteString
+
+building :: Iso' BS.Builder BS.ByteString
+building = iso unBuilder BS.byteString
+
+
 -- | Match represents an opaque regex match.
 -- You can drill into it using 'match', 'groups', 'group', 'namedGroup', 'namedGroups' or 'matchAndGroups'
 data Match =
     Match { _chunks    :: [Either BS.Builder BS.Builder]
           , _matchRegex :: PCRE.Regex
           }
+
+instance Eq Match where
+  a == b = (_matchRegex a == _matchRegex b)
+    && (((bimap unBuilder unBuilder) <$> _chunks a) == ((bimap unBuilder unBuilder) <$> _chunks b))
+
+instance Ord Match where
+  compare a b = compare (_matchRegex a) (_matchRegex b)
+    <> compare ((bimap unBuilder unBuilder) <$> _chunks a) ((bimap unBuilder unBuilder) <$> _chunks b)
+
+
+
 makeLensesFor [("_chunks", "chunks")] ''Match
 
 instance TypeError
@@ -75,12 +94,6 @@
    ':$$: 'Text "You likely missed adding a 'match' or 'groups' or 'group' call after your 'regex' call :)")
   => Show Match where
   show _ = "This is a raw Match object, did you miss a 'match' or 'groups' or 'group' call after your 'regex'?"
-
-unBuilder :: BS.Builder -> BS.ByteString
-unBuilder = BL.toStrict . BS.toLazyByteString
-
-building :: Iso' BS.Builder BS.ByteString
-building = iso unBuilder BS.byteString
 
 -- | Access all groups of a match as a list. Stashes the full match text as the index in case
 -- you need it.
