diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2011, Brent Yorgey
+
+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 Brent Yorgey 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
diff --git a/src/Data/AffineSpace/Point.hs b/src/Data/AffineSpace/Point.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/AffineSpace/Point.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE TypeFamilies
+           , MultiParamTypeClasses
+           , FlexibleInstances
+           , DeriveFunctor
+           , DeriveDataTypeable
+  #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Data.AffineSpace.Point
+-- Copyright   :  (c) 2011 Brent Yorgey
+-- License     :  BSD-style (see LICENSE)
+-- Maintainer  :  byorgey@cis.upenn.edu
+--
+-- A type for /points/ (as distinct from vectors), with an appropriate
+-- AffineSpace instance.
+--
+-----------------------------------------------------------------------------
+
+module Data.AffineSpace.Point
+       ( -- * Points
+
+         Point(..), origin, (*.)
+
+       ) where
+
+import Data.VectorSpace
+import qualified Data.AffineSpace as AS
+
+import Control.Newtype
+import Data.Data (Data)
+import Data.Typeable (Typeable)
+
+------------------------------------------------------------
+--  Points  ------------------------------------------------
+------------------------------------------------------------
+
+-- | @Point@ is a newtype wrapper around vectors that we wish to treat
+--   as points, so we don't get them mixed up. The distinction is
+--   important: translations affect points, but leave vectors
+--   unchanged.  Points are instances of the 'AffineSpace' class from
+--   "Data.AffineSpace".
+newtype Point v = P v
+  deriving (Eq, Ord, Read, Show, Data, Typeable, Functor)
+
+instance Newtype (Point v) v where
+  pack = P
+  unpack (P v) = v
+
+-- | The origin of the vector space @v@.
+origin :: AdditiveGroup v => Point v
+origin = P zeroV
+
+instance AdditiveGroup v => AS.AffineSpace (Point v) where
+  type AS.Diff (Point v) = v
+  P v1 .-. P v2 = v1 ^-^ v2
+  P v1 .+^ v2   = P (v1 ^+^ v2)
+
+-- | Scale a point by a scalar.
+(*.) :: VectorSpace v => Scalar v -> Point v -> Point v
+s *. P v = P (s *^ v)
diff --git a/vector-space-points.cabal b/vector-space-points.cabal
new file mode 100644
--- /dev/null
+++ b/vector-space-points.cabal
@@ -0,0 +1,26 @@
+-- Initial vector-space-points.cabal generated by cabal init. For further
+-- documentation, see http://haskell.org/cabal/users-guide/
+
+name:                vector-space-points
+version:             0.1.0.0
+synopsis:            A type for points, as distinct from vectors.
+description:         A type for points, as distinct from vectors, built on top
+                     of Data.AffineSpace.
+license:             BSD3
+license-file:        LICENSE
+author:              Brent Yorgey
+maintainer:          byorgey@cis.upenn.edu
+copyright:           (c) 2011 Brent Yorgey
+category:            Math
+build-type:          Simple
+cabal-version:       >=1.8
+source-repository head
+  type:     darcs
+  location: http://patch-tag.com/r/byorgey/vector-space-points
+
+library
+  exposed-modules:     Data.AffineSpace.Point
+  build-depends:       base >=4.0 && < 4.6, 
+                       vector-space >=0.7 && < 0.9, 
+                       newtype ==0.2.*
+  hs-source-dirs:      src
