diff --git a/configifier.cabal b/configifier.cabal
--- a/configifier.cabal
+++ b/configifier.cabal
@@ -1,5 +1,5 @@
 name:                configifier
-version:             0.0.7
+version:             0.0.8
 synopsis:            parser for config files, shell variables, command line args.
 description:         See <https://github.com/zerobuzz/configifier/blob/master/README.md README>
 license:             AGPL-3
@@ -40,7 +40,6 @@
     , either >=4.3 && <4.5
     , functor-infix >=0.0.3 && <0.1
     , mtl >=2.1 && <2.3
-    , regex-easy >=0.1.0.0 && <0.2
     , safe >=0.3 && <0.4
     , string-conversions >=0.3 && <0.5
     , template-haskell >=2.10 && <2.11
diff --git a/src/Data/Configifier.hs b/src/Data/Configifier.hs
--- a/src/Data/Configifier.hs
+++ b/src/Data/Configifier.hs
@@ -31,7 +31,7 @@
 import Data.Either.Combinators (mapLeft)
 import Data.Function (on)
 import Data.Functor.Infix ((<$$>))
-import Data.List (nubBy, intercalate, isPrefixOf)
+import Data.List (nubBy, intercalate, isPrefixOf, findIndices, splitAt)
 import Data.Maybe (catMaybes)
 import Data.Monoid (Monoid, (<>), mempty, mappend, mconcat)
 import Data.String.Conversions (ST, SBS, cs)
@@ -49,7 +49,6 @@
 import qualified Data.HashMap.Strict as HashMap
 import qualified Data.Vector as Vector
 import qualified Data.Yaml as Yaml
-import qualified Text.Regex.Easy as Regex
 
 
 -- * config types
@@ -118,7 +117,7 @@
 
 data Source =
       YamlString SBS
-    | YamlFile FilePath
+    | YamlFile FilePath  -- FIXME: { yamlFilePath :: FilePath, yamlFileOptional :: Bool }
     | ShellEnv [(String, String)]
     | CommandLine [String]
   deriving (Eq, Ord, Show, Typeable)
@@ -497,14 +496,16 @@
               <|> ((,    t) <$> parseArgsWithSpace h h')
 
 parseArgsWithEqSign :: String -> Either String (String, String)
-parseArgsWithEqSign s = case cs s Regex.=~- "^--([^=]+)=(.*)$" of
-    [_, k, v] -> Right (cs k, cs v)
-    bad -> Left $ "could not parse last arg: " ++ show (s, bad)
+parseArgsWithEqSign = f
+  where
+    f ('-':'-':t@(findIndices (== '=') -> [i])) = Right . (\(k, '=':v) -> (k, v)) $ splitAt i t
+    f s = Left $ "could not parse long-arg: " ++ show s
 
 parseArgsWithSpace :: String -> String -> Either String (String, String)
-parseArgsWithSpace s v = case cs s Regex.=~- "^--([^=]+)$" of
-    [_, k] -> Right (cs k, cs v)
-    bad -> Left $ "could not parse long-arg with value: " ++ show (s, v, bad)
+parseArgsWithSpace s v = f s
+  where
+    f ('-':'-':t) | (not . any (== '=') $ t) = Right (t, v)
+    f _ = Left $ "could not parse long-arg: " ++ show (s, v)
 
 parseArgName :: String -> String
 parseArgName = map f
