diff --git a/ANum.cabal b/ANum.cabal
new file mode 100644
--- /dev/null
+++ b/ANum.cabal
@@ -0,0 +1,28 @@
+name:                ANum
+version:             0.1.0.0
+synopsis:            Num instance for Applicatives provided via the ANum newtype
+homepage:            https://github.com/DanBurton/ANum#readme
+bug-reports:         https://github.com/DanBurton/ANum/issues
+license:             BSD3
+license-file:        LICENSE
+author:              Dan Burton
+maintainer:          dan.burton@originate.com
+copyright:           (c) Dan Burton 2013
+category:            Data
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     Data.ANum
+  other-extensions:    GeneralizedNewtypeDeriving
+  build-depends:       base == 4.*
+  default-language:    Haskell2010
+
+source-repository head
+  type: git
+  location: git://github.com/DanBurton/ANum.git
+
+source-repository this
+  type: git
+  location: git://github.com/DanBurton/ANum.git
+  tag: ANum-0.1.0.0
diff --git a/Data/ANum.hs b/Data/ANum.hs
new file mode 100644
--- /dev/null
+++ b/Data/ANum.hs
@@ -0,0 +1,53 @@
+module Data.ANum (ANum, unANum) where
+
+import Control.Applicative (Applicative, pure, (<*>), liftA, liftA2)
+
+
+newtype ANum f n = ANum (f n)
+  deriving (Show)
+
+unANum :: ANum f n -> f n
+unANum (ANum x) = x
+
+
+instance (Functor f) => Functor (ANum f) where
+  fmap f (ANum x) = ANum (fmap f x)
+
+instance (Applicative f) => Applicative (ANum f) where
+  pure x = ANum (pure x)
+  (ANum f) <*> (ANum x) = ANum (f <*> x)
+
+
+instance (Applicative f, Num n) => Num (ANum f n) where
+  fromInteger = pure . fromInteger
+  (*) = liftA2 (*)
+  (+) = liftA2 (+)
+  (-) = liftA2 (-)
+  negate = liftA negate
+  abs = liftA abs
+  signum = liftA signum
+
+instance (Applicative f, Fractional n) => Fractional (ANum f n) where
+  (/) = liftA2 (/)
+  recip = liftA recip
+  fromRational = pure . fromRational
+
+instance (Applicative f, Floating n) => Floating (ANum f n) where
+  pi = pure pi
+  exp = liftA exp
+  sqrt = liftA sqrt
+  log = liftA log
+  (**) = liftA2 (**)
+  logBase = liftA2 logBase
+  sin = liftA sin
+  tan = liftA tan
+  cos = liftA cos
+  asin = liftA asin
+  atan = liftA atan
+  acos = liftA acos
+  sinh = liftA sinh
+  tanh = liftA tanh
+  cosh = liftA cosh
+  asinh = liftA asinh
+  atanh = liftA atanh
+  acosh = liftA acosh
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2013, Dan Burton
+
+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 Dan Burton nor the names of other
+      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 HOLDERS AND CONTRIBUTORS
+"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
+OWNER OR CONTRIBUTORS 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
