diff --git a/library/Record.hs b/library/Record.hs
--- a/library/Record.hs
+++ b/library/Record.hs
@@ -10,6 +10,7 @@
 
 import BasePrelude
 import Language.Haskell.TH
+import Language.Haskell.TH.Syntax
 import Language.Haskell.TH.Quote
 import qualified Record.Types as Types
 import qualified Record.Lens as Lens
@@ -137,31 +138,19 @@
 
 recordTypeNameByArity :: Int -> Maybe Name
 recordTypeNameByArity arity =
-  fmap head $ mfilter (not . null) $ Just $
-  drop (pred arity) $
-  [
-    ''Types.Record1, ''Types.Record2, ''Types.Record3, ''Types.Record4, 
-    ''Types.Record5, ''Types.Record6, ''Types.Record7, ''Types.Record8, 
-    ''Types.Record9, ''Types.Record10, ''Types.Record11, ''Types.Record12,
-    ''Types.Record13, ''Types.Record14, ''Types.Record15, 
-    ''Types.Record16, ''Types.Record17, ''Types.Record18, ''Types.Record19, 
-    ''Types.Record20, ''Types.Record21, ''Types.Record22, 
-    ''Types.Record23, ''Types.Record24
-  ]
+  if arity > 24 || arity < 1
+    then Nothing
+    else Just (Name (OccName ("Record" <> show arity)) ns)
+  where
+    ns = case ''Types.Record1 of Name _ x -> x
 
 recordConNameByArity :: Int -> Maybe Name
 recordConNameByArity arity =
-  fmap head $ mfilter (not . null) $ Just $
-  drop (pred arity) $
-  [
-    'Types.Record1, 'Types.Record2, 'Types.Record3, 'Types.Record4, 
-    'Types.Record5, 'Types.Record6, 'Types.Record7, 'Types.Record8, 
-    'Types.Record9, 'Types.Record10, 'Types.Record11, 'Types.Record12, 
-    'Types.Record12, 'Types.Record13, 'Types.Record14, 'Types.Record15, 
-    'Types.Record16, 'Types.Record17, 'Types.Record18, 'Types.Record19, 
-    'Types.Record20, 'Types.Record21, 'Types.Record22, 'Types.Record22, 
-    'Types.Record23, 'Types.Record24
-  ]
+  if arity > 24 || arity < 1
+    then Nothing
+    else Just (Name (OccName ("Record" <> show arity)) ns)
+  where
+    ns = case 'Types.Record1 of Name _ x -> x
 
 renderType :: Parser.Type -> Either String Type
 renderType =
diff --git a/library/Record/Types.hs b/library/Record/Types.hs
--- a/library/Record/Types.hs
+++ b/library/Record/Types.hs
@@ -32,14 +32,14 @@
 -- Here's how you can use it with tuples:
 --
 -- >trd :: Field "3" v v' a' a => a -> v
--- >trd = view . fieldLens (FieldName :: FieldName "3")
+-- >trd = view . fieldLens (undefined :: FieldName "3")
 -- The function above will get you the third item of any tuple, which has it.
 class Field (n :: Symbol) a a' v v' | n a -> v, n a' -> v', n a v' -> a', n a' v -> a where
   -- |
   -- A polymorphic lens. E.g.:
   --
   -- >ageLens :: Field "age" v v' a' a => Lens a a' v v'
-  -- >ageLens = fieldLens (FieldName :: FieldName "age")
+  -- >ageLens = fieldLens (undefined :: FieldName "age")
   fieldLens :: FieldName n -> Lens a a' v v'
 
 -- |
diff --git a/record.cabal b/record.cabal
--- a/record.cabal
+++ b/record.cabal
@@ -1,7 +1,7 @@
 name:
   record
 version:
-  0.3.1
+  0.3.1.1
 synopsis:
   First class records implemented with quasi-quotation
 description:
