diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2015
+
+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 Your name here 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/acme-grawlix.cabal b/acme-grawlix.cabal
new file mode 100644
--- /dev/null
+++ b/acme-grawlix.cabal
@@ -0,0 +1,31 @@
+name:                acme-grawlix
+version:             0.1.0.0
+synopsis:            More readable names for commonly used symbols
+description:         Readable code is a laudable goal, yet most Haskell code
+                     is littered with totally unpronounceable symbols of
+                     various sorts. How can code be readable if it's
+                     unspeakable?
+
+                     This package is designed to improve upon this sad state
+                     of affairs by giving pronounceable aliases to various
+                     symbols of all sorts.
+
+                     /Share and Enjoy/
+homepage:            http://github.com/kadoban/acme-grawlix
+license:             BSD3
+license-file:        LICENSE
+author:              Joshua Simmons
+maintainer:          joshua.simmons@emptypath.com
+category:            Acme
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:     Acme.Grawlix
+  build-depends:       base >= 4.7 && < 5
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/kadoban/acme-glawlix
diff --git a/src/Acme/Grawlix.hs b/src/Acme/Grawlix.hs
new file mode 100644
--- /dev/null
+++ b/src/Acme/Grawlix.hs
@@ -0,0 +1,153 @@
+-- |
+-- Module      :  Acme.Grawlix
+-- Description :  More readable names for commonly used symbols
+-- Copyright   :  Joshua Simmons 2015
+-- License     :  BSD3
+--
+-- Maintainer  :  joshua.simmons@emptypath.com
+-- Stability   :  experimental
+--
+-- More readable names for commonly used symbols.
+--
+module Acme.Grawlix where
+
+import           Data.List ((\\))
+import           Control.Applicative (Alternative, (<|>), (<**>))
+import           Data.Monoid ((<>))
+import           Control.Monad ((>=>), (<=<))
+
+-- * List
+
+-- | An alias for the type '[]'
+type List = []
+
+-- | An alias for '[]'
+emptyList :: List a
+emptyList = []
+
+-- | An alias for ':'
+cons :: a -> List a -> List a
+cons = (:)
+
+-- | An alias for '++'
+append :: List a -> List a -> List a
+append = (++)
+
+-- | An alias for '!!'
+index :: List a -> Int -> a
+index = (!!)
+
+-- | An alias for '\\'
+difference :: Eq a => List a -> List a -> List a
+difference = (\\)
+
+-- * Function
+
+-- | An alias for '$'
+apply :: (a -> b) -> a -> b
+apply = ($)
+
+-- | An alias for '.'
+dot :: (b -> c) -> (a -> b) -> a -> c
+dot = (.)
+
+-- * Functor
+
+-- | An alias for '<$>'
+fmap :: Functor f => (a -> b) -> f a -> f b
+fmap = (<$>)
+
+-- | An alias for '<$'
+constMap :: Functor f => a -> f b -> f a
+constMap = (<$)
+
+-- * Applicative
+
+-- | An alias for '<*>'
+ap :: Applicative f => f (a -> b) -> f a -> f b
+ap = (<*>)
+
+-- | An alias for '<*'
+leftAp :: Applicative f => f a -> f b -> f a
+leftAp = (<*)
+
+-- | An alias for '*>'
+rightAp :: Applicative f => f a -> f b -> f b
+rightAp = (*>)
+
+-- | An alias for '<**>'
+flipAp :: Applicative f => f a -> f (a -> b) -> f b
+flipAp = (<**>)
+
+-- * Alternative
+
+-- | An alias for '<|>'
+orElse :: Alternative f => f a -> f a -> f a
+orElse = (<|>)
+
+-- * Monoid
+
+-- | An alias for '<>'
+mappend :: Monoid m => m -> m -> m
+mappend = (<>)
+
+-- * Monad
+
+-- | An alias for '>>='
+bind :: Monad m => m a -> (a -> m b) -> m b
+bind = (>>=)
+
+-- | An alias for '>>'
+andThen :: Monad m => m a -> m b -> m b
+andThen = (>>)
+
+-- | An alias for '=<<'
+flipBind :: Monad m => (a -> m b) -> m a -> m b
+flipBind = (=<<)
+
+-- | An alias for '>=>'
+kleisliCompose :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
+kleisliCompose = (>=>)
+
+-- | An alias for '<=<'
+flipKleisliCompose :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
+flipKleisliCompose = (<=<)
+
+-- * Tuple
+
+-- | An alias for the type '()'
+type Unit = ()
+
+-- | An alias for the value '()', of type 'Unit'
+unit :: Unit
+unit = ()
+
+-- | An alias for a tuple of zero elements
+type ZeroTuple = Unit
+
+-- | An alias for a tuple of two elements
+type TwoTuple a b = (a, b)
+
+-- | An alias for a tuple of three elements
+type ThreeTuple a b c = (a, b, c)
+
+-- | An alias for a tuple of four elements
+type FourTuple a b c d = (a, b, c, d)
+
+-- | An alias for a tuple of five elements
+type FiveTuple a b c d e = (a, b, c, d, e)
+
+-- | An alias for a tuple of six elements
+type SixTuple a b c d e f = (a, b, c, d, e, f)
+
+-- | An alias for a tuple of seven elements
+type SevenTuple a b c d e f g = (a, b, c, d, e, f, g)
+
+-- | An alias for a tuple of eight elements
+type EightTuple a b c d e f g h = (a, b, c, d, e, f, g, h)
+
+-- | An alias for a tuple of nine elements
+type NineTuple a b c d e f g h i = (a, b, c, d, e, f, g, h, i)
+
+-- | An alias for a tuple of ten elements
+type TenTuple a b c d e f g h i j= (a, b, c, d, e, f, g, h, i, j)
