diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+Release 0.14.0.0, April 8, 2013
+Changes since release 0.12.0.2:
+
+* Change long options to remove restrictions on what characters can
+  make up a long option name. Now the only restriction is that long
+  options cannot be zero length and they may not contain an equal
+  sign.
+
 Release 0.12.0.2, March 31, 2013
 Changes since release 0.12.0.0:
 
diff --git a/System/Console/MultiArg/Option.hs b/System/Console/MultiArg/Option.hs
--- a/System/Console/MultiArg/Option.hs
+++ b/System/Console/MultiArg/Option.hs
@@ -10,9 +10,6 @@
   makeLongOpt )
   where
 
-import Data.List (find)
-import Data.Maybe (isNothing)
-
 -- | Short options. Options that are preceded with a single dash on
 -- the command line and consist of a single letter. That single letter
 -- cannot be a dash. Any other Unicode character is good (including
@@ -29,8 +26,7 @@
 -- | Long options. Options that are preceded with two dashes on the
 -- command line and typically consist of an entire mnemonic word, such
 -- as @lines@. However, anything that is at least one letter long is
--- fine for a long option name. The name must not have a dash as
--- either the first or second character and it must be at least one
+-- fine for a long option name. The name must be at least one
 -- character long. It cannot have an equal sign anywhere in its
 -- name. Otherwise any Unicode character is good (including
 -- pathological ones like newlines).
@@ -46,12 +42,4 @@
 isValidLongOptText :: String -> Bool
 isValidLongOptText s = case s of
   [] -> False
-  x:xs ->
-    if x `elem` ['-', '=']
-    then False
-    else case xs of
-      [] -> True
-      y:_ ->
-        if y `elem` ['-', '=']
-        then False
-        else isNothing . find (== '=') $ xs
+  xs -> not $ '=' `elem` xs
diff --git a/multiarg.cabal b/multiarg.cabal
--- a/multiarg.cabal
+++ b/multiarg.cabal
@@ -1,5 +1,5 @@
 Name: multiarg
-Version: 0.12.0.2
+Version: 0.14.0.0
 Cabal-version: >=1.8
 Build-Type: Simple
 License: BSD3
