diff --git a/lib/Options/Tokenize.hs b/lib/Options/Tokenize.hs
--- a/lib/Options/Tokenize.hs
+++ b/lib/Options/Tokenize.hs
@@ -11,6 +11,7 @@
 	, tokenize
 	) where
 
+import           Control.Applicative
 import           Control.Monad.Error hiding (throwError)
 import qualified Control.Monad.Error
 import           Control.Monad.State
@@ -52,6 +53,13 @@
 	}
 
 newtype Tok a = Tok { unTok :: ErrorT String (StateT TokState Identity) a }
+
+instance Functor Tok where
+	fmap = liftM
+
+instance Applicative Tok where
+	pure = return
+	(<*>) = ap
 
 instance Monad Tok where
 	return = Tok . return
diff --git a/options.cabal b/options.cabal
--- a/options.cabal
+++ b/options.cabal
@@ -1,5 +1,5 @@
 name: options
-version: 1.2.1
+version: 1.2.1.1
 license: MIT
 license-file: license.txt
 author: John Millikin <john@john-millikin.com>
@@ -78,7 +78,7 @@
 source-repository this
   type: git
   location: https://john-millikin.com/code/haskell-options/
-  tag: haskell-options_1.2.1
+  tag: haskell-options_1.2.1.1
 
 library
   ghc-options: -Wall -O2
@@ -125,7 +125,7 @@
 
   build-depends:
       base >= 4.0 && < 5.0
-    , chell >= 0.3.1 && < 0.4
+    , chell >= 0.4 && < 0.5
     , chell-quickcheck >= 0.2 && < 0.3
     , containers >= 0.1
     , monads-tf >= 0.1
diff --git a/tests/OptionsTests/Api.hs b/tests/OptionsTests/Api.hs
--- a/tests/OptionsTests/Api.hs
+++ b/tests/OptionsTests/Api.hs
@@ -15,9 +15,10 @@
 
 suite_Api :: Suite
 suite_Api = suite "api"
-	test_RepeatedFlags
-	test_CompatibleDuplicateFlags
-	test_ConflictingDuplicateFlags
+	[ test_RepeatedFlags
+	, test_CompatibleDuplicateFlags
+	, test_ConflictingDuplicateFlags
+	]
 
 data RepeatedStringOpts = RepeatedStringOpts [String]
 	deriving (Eq, Show)
diff --git a/tests/OptionsTests/Help.hs b/tests/OptionsTests/Help.hs
--- a/tests/OptionsTests/Help.hs
+++ b/tests/OptionsTests/Help.hs
@@ -15,25 +15,27 @@
 import           Options.Types
 
 suite_Help :: Suite
-suite_Help = suite "help"
-	suite_AddHelpFlags
-	test_CheckHelpFlag
-	test_ShowHelpSummary
-	test_ShowHelpSummary_Subcommand
-	test_ShowHelpAll
-	test_ShowHelpAll_Subcommand
-	test_ShowHelpGroup
-	test_ShowHelpGroup_Subcommand
-	test_ShowHelpGroup_SubcommandInvalid
+suite_Help = suite "help" $
+	suiteTests suite_AddHelpFlags ++
+	[ test_CheckHelpFlag
+	, test_ShowHelpSummary
+	, test_ShowHelpSummary_Subcommand
+	, test_ShowHelpAll
+	, test_ShowHelpAll_Subcommand
+	, test_ShowHelpGroup
+	, test_ShowHelpGroup_Subcommand
+	, test_ShowHelpGroup_SubcommandInvalid
+	]
 
 suite_AddHelpFlags :: Suite
 suite_AddHelpFlags = suite "addHelpFlags"
-	test_AddHelpFlags_None
-	test_AddHelpFlags_Short
-	test_AddHelpFlags_Long
-	test_AddHelpFlags_Both
-	test_AddHelpFlags_NoAll
-	test_AddHelpFlags_Subcommand
+	[ test_AddHelpFlags_None
+	, test_AddHelpFlags_Short
+	, test_AddHelpFlags_Long
+	, test_AddHelpFlags_Both
+	, test_AddHelpFlags_NoAll
+	, test_AddHelpFlags_Subcommand
+	]
 
 groupHelp :: Maybe Group
 groupHelp = Just (Group
diff --git a/tests/OptionsTests/OptionTypes.hs b/tests/OptionsTests/OptionTypes.hs
--- a/tests/OptionsTests/OptionTypes.hs
+++ b/tests/OptionsTests/OptionTypes.hs
@@ -20,26 +20,27 @@
 
 suite_OptionTypes :: Suite
 suite_OptionTypes = suite "option-types"
-	test_Bool
-	test_String
-	test_Int
-	test_Int8
-	test_Int16
-	test_Int32
-	test_Int64
-	test_Word
-	test_Word8
-	test_Word16
-	test_Word32
-	test_Word64
-	test_Integer
-	test_Float
-	test_Double
-	test_Maybe
-	test_List
-	test_Set
-	test_Map
-	test_Enum
+	[ test_Bool
+	, test_String
+	, test_Int
+	, test_Int8
+	, test_Int16
+	, test_Int32
+	, test_Int64
+	, test_Word
+	, test_Word8
+	, test_Word16
+	, test_Word32
+	, test_Word64
+	, test_Integer
+	, test_Float
+	, test_Double
+	, test_Maybe
+	, test_List
+	, test_Set
+	, test_Map
+	, test_Enum
+	]
 
 parseValid :: (Show a, Eq a) => OptionType a -> String -> a -> Assertion
 parseValid t s expected = equal (optionTypeParse t s) (Right expected)
diff --git a/tests/OptionsTests/StringParsing.hs b/tests/OptionsTests/StringParsing.hs
--- a/tests/OptionsTests/StringParsing.hs
+++ b/tests/OptionsTests/StringParsing.hs
@@ -29,10 +29,11 @@
 
 suite_StringParsing :: Suite
 suite_StringParsing = suite "string-parsing"
-	test_Defaults
-	test_Ascii
-	test_UnicodeValid
-	test_UnicodeInvalid
+	[ test_Defaults
+	, test_Ascii
+	, test_UnicodeValid
+	, test_UnicodeInvalid
+	]
 
 test_Defaults :: Test
 test_Defaults = assertions "defaults" $ do
diff --git a/tests/OptionsTests/Tokenize.hs b/tests/OptionsTests/Tokenize.hs
--- a/tests/OptionsTests/Tokenize.hs
+++ b/tests/OptionsTests/Tokenize.hs
@@ -16,22 +16,23 @@
 
 suite_Tokenize :: Suite
 suite_Tokenize = suite "tokenize"
-	test_Empty
-	test_NoFlag
-	test_ShortFlag
-	test_ShortFlagUnknown
-	test_ShortFlagMissing
-	test_ShortFlagUnary
-	test_ShortFlagDuplicate
-	test_LongFlag
-	test_LongFlagUnknown
-	test_LongFlagMissing
-	test_LongFlagUnary
-	test_LongFlagDuplicate
-	test_EndFlags
-	test_Subcommand
-	test_SubcommandUnknown
-	test_Unicode
+	[ test_Empty
+	, test_NoFlag
+	, test_ShortFlag
+	, test_ShortFlagUnknown
+	, test_ShortFlagMissing
+	, test_ShortFlagUnary
+	, test_ShortFlagDuplicate
+	, test_LongFlag
+	, test_LongFlagUnknown
+	, test_LongFlagMissing
+	, test_LongFlagUnary
+	, test_LongFlagDuplicate
+	, test_EndFlags
+	, test_Subcommand
+	, test_SubcommandUnknown
+	, test_Unicode
+	]
 
 commandDefs :: OptionDefinitions
 commandDefs = OptionDefinitions
diff --git a/tests/OptionsTests/Util.hs b/tests/OptionsTests/Util.hs
--- a/tests/OptionsTests/Util.hs
+++ b/tests/OptionsTests/Util.hs
@@ -27,13 +27,14 @@
 
 suite_Util :: Suite
 suite_Util = suite "util"
-	test_ValidFieldName
-	test_ValidShortFlag
-	test_ValidLongFlag
-	test_HasDuplicates
+	[ test_ValidFieldName
+	, test_ValidShortFlag
+	, test_ValidLongFlag
+	, test_HasDuplicates
 #if defined(OPTIONS_ENCODING_UTF8)
-	property "decodeUtf8" prop_DecodeUtf8
+	, property "decodeUtf8" prop_DecodeUtf8
 #endif
+	]
 
 test_ValidFieldName :: Test
 test_ValidFieldName = assertions "validFieldName" $ do
