diff --git a/Data/Vector/Unboxed/Deriving.hs b/Data/Vector/Unboxed/Deriving.hs
--- a/Data/Vector/Unboxed/Deriving.hs
+++ b/Data/Vector/Unboxed/Deriving.hs
@@ -11,7 +11,7 @@
 
 {-|
 Module:      Data.Vector.Unboxed.Deriving
-Copyright:   © 2012−2014 Liyang HU
+Copyright:   © 2012−2015 Liyang HU
 License:     BSD3
 Maintainer:  vector-th-unbox@liyang.hu
 Stability:   experimental
@@ -43,9 +43,11 @@
 common :: String -> Q Common
 common name = do
     -- A bit looser than “Haskell 2010: §2.4 Identifiers and Operators”…
-    unless (all (\ c -> c == '\'' || c == '#' || isAlphaNum c) name) $ do
+    let valid c = c == '_' || c == '\'' || c == '#' || isAlphaNum c
+    unless (all valid name) $ do
         fail (show name ++ " is not a valid constructor suffix!")
-    let (mvName, vName) = (mkName $ "MV_" ++ name, mkName $ "V_" ++ name)
+    let mvName = mkName ("MV_" ++ name)
+    let vName = mkName ("V_" ++ name)
     i <- newPatExp "idx"
     n <- newPatExp "len"
     mv  <- first (ConP mvName . (:[])) <$> newPatExp "mvec"
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012, Liyang HU
+Copyright (c) 2012−2015, Liyang HU
 
 All rights reserved.
 
diff --git a/vector-th-unbox.cabal b/vector-th-unbox.cabal
--- a/vector-th-unbox.cabal
+++ b/vector-th-unbox.cabal
@@ -1,5 +1,5 @@
 name:           vector-th-unbox
-version:        0.2.1.1
+version:        0.2.1.2
 synopsis:       Deriver for Data.Vector.Unboxed using Template Haskell
 description:
     A Template Haskell deriver for unboxed vectors, given a pair of coercion
@@ -9,7 +9,7 @@
 stability:      experimental
 license:        BSD3
 license-file:   LICENSE
-copyright:      © 2012−2013 Liyang HU
+copyright:      © 2012−2015 Liyang HU
 author:         Liyang HU <vector-th-unbox@liyang.hu>
 maintainer:     Liyang HU <vector-th-unbox@liyang.hu>
 category:       Data
