diff --git a/Text/Parsers/Frisby.hs b/Text/Parsers/Frisby.hs
--- a/Text/Parsers/Frisby.hs
+++ b/Text/Parsers/Frisby.hs
@@ -176,12 +176,15 @@
 
 import Control.Applicative
    hiding(many,optional) --though same meaning 'many', and superior 'optional'
+import qualified Control.Applicative (many)
 import qualified Data.IntSet as IntSet
 import Control.Monad.Fix
 import Control.Monad.Identity
 import Data.Char(ord,chr)
 import Control.Monad.State
 import Data.Array hiding((//))
+import Data.Semigroup (Semigroup)
+import qualified Data.Semigroup as Semigroup
 import Data.Monoid hiding(Any,(<>))
 import qualified Data.Map as Map
 
@@ -256,7 +259,7 @@
 
 -- 's' added for safe state, just as the ST monad's interface uses
 newtype P s a = P { fromP :: PE a }
-    deriving(Functor,Applicative,Alternative,Monoid)
+    deriving(Functor,Applicative,Alternative,Semigroup,Monoid)
 
 data PE a where
     Char :: IntSet.IntSet -> PE Char
@@ -289,9 +292,15 @@
 --the function (++), (,) ... but, 'text', etc, does this too
     mf <*> ma = PMap (\(f,a) -> f a) (Then mf ma)
     pure = Unit
+
 instance Alternative PE where
     (<|>) = Slash
     empty = Failure
+    some p = uncurry (:) <$> Then p (Star p)
+    many  = Star
+
+instance Semigroup (PE a) where
+    (<>) = Slash
 
 instance Monoid (PE a) where
     mappend = Slash
diff --git a/frisby.cabal b/frisby.cabal
--- a/frisby.cabal
+++ b/frisby.cabal
@@ -1,10 +1,10 @@
 name:                frisby
-version:             0.2
+version:             0.2.1
 cabal-version:       >=1.6
 license:             BSD3
 copyright:           John Meacham (2006)
 author:              John Meacham <john@repetae.net>
-maintainer:          John Meacham <john@repetae.net>, Chris Done <chrisdone@gmail.com>
+maintainer:          Ben Gamari <ben@smart-cactus.org>
 stability:           experimental
 homepage:            http://repetae.net/computer/frisby/
 homepage:            http://repetae.net/computer/frisby/
@@ -23,14 +23,14 @@
                      In addition to many standard combinators, frisby provides
                      routines to translate standard regex syntax into frisby parsers.
 category:            Text
-tested-with:         GHC==7.6
+tested-with:         GHC == 7.6.*, GHC == 7.8.*, GHC == 7.10.*, GHC == 8.0.*, GHC == 8.2.*
 license-file:        LICENSE
 build-type:          Simple
 
 library
   exposed-modules:     Text.Parsers.Frisby, Text.Parsers.Frisby.Char
-  build-depends:       base>=4 && <5, containers, mtl, array
+  build-depends:       base>=4 && <5, containers, mtl, array, semigroups
 
 source-repository head
   type:     git
-  location: https://github.com/chrisdone/frisby
+  location: https://github.com/bgamari/frisby
