diff --git a/haskell-src-meta.cabal b/haskell-src-meta.cabal
--- a/haskell-src-meta.cabal
+++ b/haskell-src-meta.cabal
@@ -1,5 +1,5 @@
 name:               haskell-src-meta
-version:            0.0.4
+version:            0.0.5
 cabal-version:      >= 1.6
 build-type:         Simple
 license:            BSD3
@@ -14,7 +14,7 @@
                     to template-haskell abstract syntax isn't 100% complete yet.
 
 library
-  build-Depends:      base == 4.*, containers, haskell-src-exts == 1.0.*,
+  build-Depends:      base == 4.*, containers, haskell-src-exts == 1.*,
                       packedstring, template-haskell, pretty, syb
   extensions:         TemplateHaskell, QuasiQuotes,
                       RankNTypes, StandaloneDeriving,
@@ -33,6 +33,6 @@
                       Language.Haskell.Meta.QQ.Hs,
                       Language.Haskell.Meta.QQ.Here,
                       Language.Haskell.Meta.QQ.HsHere,
-                      Language.Haskell.Meta.QQ.Vixey,
+                      Language.Haskell.Meta.QQ.Idiom,
                       Language.Haskell.Meta.QQ.BF,
                       Language.Haskell.Meta.QQ.SKI
diff --git a/src/Language/Haskell/Meta/QQ/Idiom.hs b/src/Language/Haskell/Meta/QQ/Idiom.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Haskell/Meta/QQ/Idiom.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
+
+-- | Idiom brackets. Vixey's idea.
+
+module Language.Haskell.Meta.QQ.Idiom (i) where
+
+import Data.Generics
+  (Data,everywhere,mkT)
+import Control.Applicative
+import Language.Haskell.Meta
+import Language.Haskell.TH.Lib
+import Language.Haskell.TH.Quote
+import Language.Haskell.TH.Syntax
+
+-- ghci> [$i| (,) "foo" "bar" |]
+-- [('f','b'),('f','a'),('f','r'),('o','b'),('o','a'),('o','r'),('o','b'),('o','a'),('o','r')]
+i :: QuasiQuoter
+i = QuasiQuoter ((cleanNames <$>) . applicateQ)
+        (either fail return . parsePat)
+
+applicateQ :: String -> ExpQ
+applicateQ s = case either fail unwindE (parseExp s) of
+                  x:y:xs -> foldl
+                              (\e e' -> [|$e <*> $e'|])
+                              [|$(return x) <$> $(return y)|]
+                              (fmap return xs)
+                  _ -> fail "applicateQ fails."
+
+unwindE :: Exp -> [Exp]
+unwindE = go []
+  where go acc (e `AppE` e') = go (e':acc) e
+        go acc e = e:acc
+
+cleanNames :: (Data a) => a -> a
+cleanNames = everywhere (mkT cleanName)
+  where cleanName :: Name -> Name
+        cleanName n
+          | isNameU n = n
+          | otherwise = (mkName . nameBase) n
+        isNameU :: Name -> Bool
+        isNameU (Name _ (NameU _)) = True
+        isNameU _ = False
+
+
diff --git a/src/Language/Haskell/Meta/QQ/Vixey.hs b/src/Language/Haskell/Meta/QQ/Vixey.hs
deleted file mode 100644
--- a/src/Language/Haskell/Meta/QQ/Vixey.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
-
--- | Vixey's idea.
-
-module Language.Haskell.Meta.QQ.Vixey (vix) where
-
-import Data.Generics
-  (Data,everywhere,mkT)
-import Control.Applicative
-import Language.Haskell.Meta
-import Language.Haskell.TH.Lib
-import Language.Haskell.TH.Quote
-import Language.Haskell.TH.Syntax
-
--- ghci> [$i| (,) "foo" "bar" |]
--- [('f','b'),('f','a'),('f','r'),('o','b'),('o','a'),('o','r'),('o','b'),('o','a'),('o','r')]
-vix :: QuasiQuoter
-vix = QuasiQuoter ((cleanNames <$>) . applicateQ)
-        (either fail return . parsePat)
-
-applicateQ :: String -> ExpQ
-applicateQ s = case either fail unwindE (parseExp s) of
-                  x:y:xs -> foldl
-                              (\e e' -> [|$e <*> $e'|])
-                              [|$(return x) <$> $(return y)|]
-                              (fmap return xs)
-                  _ -> fail "applicateQ fails."
-
-unwindE :: Exp -> [Exp]
-unwindE = go []
-  where go acc (e `AppE` e') = go (e':acc) e
-        go acc e = e:acc
-
-cleanNames :: (Data a) => a -> a
-cleanNames = everywhere (mkT cleanName)
-  where cleanName :: Name -> Name
-        cleanName n
-          | isNameU n = n
-          | otherwise = (mkName . nameBase) n
-        isNameU :: Name -> Bool
-        isNameU (Name _ (NameU _)) = True
-        isNameU _ = False
-
-
diff --git a/src/Language/Haskell/Meta/Utils.hs b/src/Language/Haskell/Meta/Utils.hs
--- a/src/Language/Haskell/Meta/Utils.hs
+++ b/src/Language/Haskell/Meta/Utils.hs
@@ -321,6 +321,11 @@
 fromTyConI (TyConI dec) = Just dec
 fromTyConI _ = Nothing
 
+mkFunD :: Name -> [Pat] -> Exp -> Dec
+mkFunD f xs e = FunD f [Clause xs (NormalB e) []]
+
+mkClauseQ :: [PatQ] -> ExpQ -> ClauseQ
+mkClauseQ ps e = clause ps (normalB e) []
 
 -----------------------------------------------------------------------------
 
diff --git a/src/Language/Haskell/TH/Instances/Lift.hs b/src/Language/Haskell/TH/Instances/Lift.hs
--- a/src/Language/Haskell/TH/Instances/Lift.hs
+++ b/src/Language/Haskell/TH/Instances/Lift.hs
@@ -18,6 +18,24 @@
 import Data.List(intercalate)
 import GHC.Base
 
+deriving instance Ord Exp
+deriving instance Ord Dec
+deriving instance Ord Stmt
+deriving instance Ord Type
+deriving instance Ord Foreign
+deriving instance Ord FunDep
+deriving instance Ord Con
+deriving instance Ord Body
+deriving instance Ord Clause
+deriving instance Ord Strict
+deriving instance Ord Safety
+deriving instance Ord Callconv
+deriving instance Ord Guard
+deriving instance Ord Range
+deriving instance Ord Match
+deriving instance Ord Pat
+deriving instance Ord Lit
+
 instance Lift () where
   lift () = [|()|]
 
