diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2013 Henning Thielemann
+Copyright (c) 2008 Peter Gavin
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the copyright holder nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/src/Types/Data/Num/Decimal/Literals/Big.hs b/src/Types/Data/Num/Decimal/Literals/Big.hs
new file mode 100644
--- /dev/null
+++ b/src/Types/Data/Num/Decimal/Literals/Big.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module Types.Data.Num.Decimal.Literals.Big where
+
+import Types.Data.Num.Decimal.Literals.TH
+
+$( decLiteralsD "D" "d" (-10000) (10000) )
diff --git a/src/Types/Data/Num/Decimal/Literals/TH.hs b/src/Types/Data/Num/Decimal/Literals/TH.hs
new file mode 100644
--- /dev/null
+++ b/src/Types/Data/Num/Decimal/Literals/TH.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE TemplateHaskell #-}
+module Types.Data.Num.Decimal.Literals.TH where
+
+import Language.Haskell.TH
+
+import qualified Types.Data.Num.Decimal.Digits as D
+import qualified Types.Data.Num.Ops as O
+
+decLiteralT :: Integer -> Q Type
+decLiteralT k = appT (conT (''D.Dec)) (decLiteralT' k)
+    where decLiteralT' n | n < 0     = appT (conT ''D.Neg') (decLiteralT' (-n))
+                         | n == 0    = conT ''D.DecN
+                         | otherwise = appT (appT (conT ''(O.:.)) (decLiteralT' (n `div` 10))) (conT (case n `mod` 10 of
+                                                  0 -> ''D.Dec0 
+                                                  1 -> ''D.Dec1
+                                                  2 -> ''D.Dec2
+                                                  3 -> ''D.Dec3
+                                                  4 -> ''D.Dec4
+                                                  5 -> ''D.Dec5
+                                                  6 -> ''D.Dec6
+                                                  7 -> ''D.Dec7
+                                                  8 -> ''D.Dec8
+                                                  9 -> ''D.Dec9
+                                                  d -> error $ "not a decimal digit: " ++ show d))
+
+decLiteralV :: Integer -> Q Exp
+decLiteralV n = sigE [| undefined |] (decLiteralT n)
+
+decLiteralD :: String
+            -> String
+            -> Integer
+            -> Q [Dec]
+decLiteralD typePrefix valPrefix n =
+    do let (tsign, vsign, num) =
+              if n < 0 then ("N", "n", show (-n)) else ("", "", show n)
+           typeName = mkName $ typePrefix ++ tsign ++ num
+           valName = mkName $ valPrefix ++ vsign ++ num
+       tySyn <- tySynD typeName [] (decLiteralT n)
+       sig   <- sigD valName (conT typeName)
+       val   <- valD (varP valName) (normalB [| undefined |]) []
+       return [ tySyn, sig, val ]
+
+decLiteralsD :: String
+             -> String
+             -> Integer
+             -> Integer
+             -> Q [Dec]
+decLiteralsD typePrefix valPrefix from to =
+    fmap concat $ sequence $ [ decLiteralD typePrefix valPrefix n | n <- [from..to] ]
diff --git a/tfp-th.cabal b/tfp-th.cabal
new file mode 100644
--- /dev/null
+++ b/tfp-th.cabal
@@ -0,0 +1,38 @@
+Name:           tfp-th
+Version:        0.8
+License:        BSD3
+License-File:   LICENSE
+Copyright:      Copyright (c) 2013 Henning Thielemann, 2008 Peter Gavin
+Author:         Peter Gavin, Henning Thielemann
+Maintainer:     haskell@henning-thielemann.de
+Homepage:       http://www.haskell.org/haskellwiki/Type_arithmetic
+Synopsis:       Template-Haskell code for tfp
+Description:
+  This package contains Template Haskell for generating tons of type integer literals
+  and a module that provides integers from a large range.
+Category:       Type System
+Tested-with:    GHC == 7.4.2, GHC == 7.6.3
+Stability:      alpha
+Cabal-version:  >= 1.6
+Build-Type:     Simple
+
+Source-Repository head
+  Type:         darcs
+  Location:     http://code.haskell.org/~thielema/tfp-th/
+
+Source-Repository this
+  Tag:          0.8
+  Type:         darcs
+  Location:     http://code.haskell.org/~thielema/tfp-th/
+
+
+Library
+  Build-Depends:
+    tfp >=0.8 && <0.9,
+    template-haskell >=2.0,
+    base >=3.0 && <5
+  GHC-Options:    -Wall
+  Hs-Source-Dirs: src
+  Exposed-Modules:
+    Types.Data.Num.Decimal.Literals.Big
+    Types.Data.Num.Decimal.Literals.TH
