diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,11 @@
+Version 1.1
+-------------
+
+* Added `si` parser.
+* Moved `DefaultUnitOfDim` instances from `SI.MonoTypes` to `SI.Mono`. This allows
+  client code to import the monomorphic types without getting these instances. But,
+  it may mean that your imports have to change.
+
 Version 1.0.1
 -------------
 
diff --git a/Data/Metrology/SI/Mono.hs b/Data/Metrology/SI/Mono.hs
--- a/Data/Metrology/SI/Mono.hs
+++ b/Data/Metrology/SI/Mono.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TypeOperators, TypeFamilies #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Metrology.SI.Mono
@@ -15,11 +17,21 @@
 module Data.Metrology.SI.Mono (
   module Data.Metrology.SI.MonoTypes,
   module Data.Metrology.SI.Units,
-  module Data.Metrology.SI.Prefixes
+  module Data.Metrology.SI.Prefixes,
+  module Data.Metrology.SI.Parser
   ) where
 
 import Data.Metrology.SI.MonoTypes
 import Data.Metrology.SI.Units
 import Data.Metrology.SI.Prefixes
-
+import qualified Data.Metrology.SI.Dims as D
+import Data.Metrology
+import Data.Metrology.SI.Parser
 
+type instance DefaultUnitOfDim D.Length            = Meter
+type instance DefaultUnitOfDim D.Mass              = Kilo :@ Gram
+type instance DefaultUnitOfDim D.Time              = Second
+type instance DefaultUnitOfDim D.Current           = Ampere
+type instance DefaultUnitOfDim D.Temperature       = Kelvin
+type instance DefaultUnitOfDim D.AmountOfSubstance = Mole
+type instance DefaultUnitOfDim D.LuminousIntensity = Lumen
diff --git a/Data/Metrology/SI/MonoTypes.hs b/Data/Metrology/SI/MonoTypes.hs
--- a/Data/Metrology/SI/MonoTypes.hs
+++ b/Data/Metrology/SI/MonoTypes.hs
@@ -16,17 +16,7 @@
 module Data.Metrology.SI.MonoTypes where
 
 import Data.Metrology
-import Data.Metrology.SI.Units
-import Data.Metrology.SI.Prefixes ( Kilo )
 import qualified Data.Metrology.SI.Dims as D
-
-type instance DefaultUnitOfDim D.Length            = Meter
-type instance DefaultUnitOfDim D.Mass              = Kilo :@ Gram
-type instance DefaultUnitOfDim D.Time              = Second
-type instance DefaultUnitOfDim D.Current           = Ampere
-type instance DefaultUnitOfDim D.Temperature       = Kelvin
-type instance DefaultUnitOfDim D.AmountOfSubstance = Mole
-type instance DefaultUnitOfDim D.LuminousIntensity = Lumen
 
 type Length              = MkQu_D D.Length
 type Mass                = MkQu_D D.Mass
diff --git a/Data/Metrology/SI/Parser.hs b/Data/Metrology/SI/Parser.hs
new file mode 100644
--- /dev/null
+++ b/Data/Metrology/SI/Parser.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Data.Metrology.SI.Parser
+-- Copyright   :  (C) 2013 Richard Eisenberg
+-- License     :  BSD-style (see LICENSE)
+-- Maintainer  :  Richard Eisenberg (eir@cis.upenn.edu)
+-- Stability   :  experimental
+-- Portability :  non-portable
+--
+-- Defines a quasi-quoting parser for unit expressions. Writing, say,
+-- @[si| m/s^2 |]@ produces @(Meter :/ (Second :^ sTwo))@. A larger
+-- example is
+--
+-- > ke :: Energy
+-- > ke = 5 % [si| N km |]  -- 5 Newton-kilometers
+--
+-- See `Data.Metrology.Parser` for more information about the syntax
+-- of these unit expressions.
+-----------------------------------------------------------------------------
+
+module Data.Metrology.SI.Parser where
+
+import Data.Metrology.Parser
+import Data.Metrology.SI.Prefixes
+import Data.Metrology.SI.Units
+
+makeQuasiQuoter "si" siPrefixes siUnits
diff --git a/Data/Metrology/SI/Poly.hs b/Data/Metrology/SI/Poly.hs
--- a/Data/Metrology/SI/Poly.hs
+++ b/Data/Metrology/SI/Poly.hs
@@ -18,7 +18,8 @@
   SI,
   module Data.Metrology.SI.PolyTypes,
   module Data.Metrology.SI.Prefixes,
-  module Data.Metrology.SI.Units
+  module Data.Metrology.SI.Units,
+  module Data.Metrology.SI.Parser
   ) where
 
 import Data.Metrology.SI.PolyTypes
@@ -26,6 +27,7 @@
 import Data.Metrology.SI.Units
 import qualified Data.Metrology.SI.Dims as D
 import Data.Metrology
+import Data.Metrology.SI.Parser
 
 type SI = MkLCSU '[ (D.Length, Meter)
                   , (D.Mass, Kilo :@ Gram)
diff --git a/Data/Metrology/SI/Prefixes.hs b/Data/Metrology/SI/Prefixes.hs
--- a/Data/Metrology/SI/Prefixes.hs
+++ b/Data/Metrology/SI/Prefixes.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE TypeOperators, TemplateHaskell #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -14,6 +14,7 @@
 
 module Data.Metrology.SI.Prefixes where
 
+import Language.Haskell.TH ( Name )
 import Data.Metrology
 
 -- | 10^1
@@ -215,3 +216,12 @@
 
 yocto :: unit -> Yocto :@ unit
 yocto = (Yocto :@)
+
+-- | A list of the names of all prefix types. Useful with
+-- 'Data.Metrology.Parser.makeQuasiQuoter'.
+siPrefixes :: [Name]
+siPrefixes =
+  [ ''Deca, ''Hecto, ''Kilo, ''Mega, ''Giga, ''Tera, ''Peta, ''Exa
+  , ''Zetta, ''Yotta, ''Deci, ''Centi, ''Milli, ''Micro, ''Nano
+  , ''Pico, ''Femto, ''Atto, ''Zepto, ''Yocto
+  ]
diff --git a/Data/Metrology/SI/Units.hs b/Data/Metrology/SI/Units.hs
--- a/Data/Metrology/SI/Units.hs
+++ b/Data/Metrology/SI/Units.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TypeFamilies, TypeOperators, PatternSynonyms #-}
+{-# LANGUAGE TypeFamilies, TypeOperators, PatternSynonyms, TemplateHaskell #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -31,6 +31,8 @@
 import Data.Metrology.SI.Dims
 import Data.Metrology.SI.Prefixes ( Kilo, Centi )
 
+import Language.Haskell.TH ( Name )
+
 data Meter = Meter
 instance Unit Meter where
   type BaseUnit Meter = Canonical
@@ -250,3 +252,15 @@
 
 type Tonne = Ton
 pattern Tonne = Ton
+
+-- | A list of the names of all unit types. Useful with
+-- 'Data.Metrology.Parser.makeQuasiQuoter'.
+siUnits :: [Name]
+siUnits =
+  [ ''Meter, ''Gram, ''Second, ''Minute, ''Hour, ''Day, ''Ampere
+  , ''Kelvin, ''Mole, ''Candela, ''Hertz, ''Liter, ''Newton, ''Pascal
+  , ''Joule, ''Watt, ''Coulomb, ''Volt, ''Farad, ''Ohm, ''Siemens
+  , ''Weber, ''Tesla, ''Henry, ''Lumen, ''Lux, ''Becquerel, ''Gray
+  , ''Sievert, ''Katal, ''Hectare, ''Ton
+  ]
+    
diff --git a/units-defs.cabal b/units-defs.cabal
--- a/units-defs.cabal
+++ b/units-defs.cabal
@@ -1,5 +1,5 @@
 name:           units-defs
-version:        1.0.1
+version:        1.1
 cabal-version:  >= 1.10
 synopsis:       Definitions for use with the units package
 homepage:       http://github.com/goldfirere/units-defs
@@ -13,7 +13,6 @@
 license-file:   LICENSE
 build-type:     Simple
 description:
-
     This package provides system definitions for use with the separate
     @units@ package. See the individual modules for details.
 
@@ -23,12 +22,13 @@
 source-repository this
   type:     git
   location: https://github.com/goldfirere/units-defs.git
-  tag:      v1.0.1
+  tag:      v1.1
 
 library
   build-depends:      
       base >= 4.7 && < 5,
-      units >= 2.0 && < 3
+      units >= 2.1 && < 3,
+      template-haskell
   exposed-modules:
     Data.Metrology.SI,
     Data.Metrology.SI.Mono,
@@ -37,9 +37,11 @@
     Data.Metrology.SI.MonoTypes, 
     Data.Metrology.SI.Units,
     Data.Metrology.SI.Dims,
-    Data.Metrology.SI.PolyTypes
+    Data.Metrology.SI.PolyTypes,
+    Data.Metrology.SI.Parser
 --    Data.Metrology.Imperial.Types
 --    Data.Metrology.Imperial.Units
 
   default-language:   Haskell2010
-
+  default-extensions: TemplateHaskell
+  ghc-options:        -Wall
