diff --git a/src/ACME/PreCure/Textbook.hs b/src/ACME/PreCure/Textbook.hs
--- a/src/ACME/PreCure/Textbook.hs
+++ b/src/ACME/PreCure/Textbook.hs
@@ -1,18 +1,2 @@
-module ACME.PreCure.Textbook
-  ( module T
-  ) where
-
-
-import           ACME.PreCure.Textbook.First as T
-import           ACME.PreCure.Textbook.MaxHeart as T
-import           ACME.PreCure.Textbook.SplashStar as T
-import           ACME.PreCure.Textbook.Yes5 as T
-import           ACME.PreCure.Textbook.Yes5GoGo as T
-import           ACME.PreCure.Textbook.Fresh as T
-import           ACME.PreCure.Textbook.HeartCatch as T
-import           ACME.PreCure.Textbook.Suite as T
-import           ACME.PreCure.Textbook.Smile as T
-import           ACME.PreCure.Textbook.Dokidoki as T
-import           ACME.PreCure.Textbook.HappinessCharge as T
-import           ACME.PreCure.Textbook.GoPrincess as T
-import           ACME.PreCure.Textbook.MahoGirls as T
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -F -pgmF autoexporter #-}
diff --git a/src/ACME/PreCure/Textbook/KirakiraALaMode.hs b/src/ACME/PreCure/Textbook/KirakiraALaMode.hs
new file mode 100644
--- /dev/null
+++ b/src/ACME/PreCure/Textbook/KirakiraALaMode.hs
@@ -0,0 +1,2 @@
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -F -pgmF autoexporter #-}
diff --git a/src/ACME/PreCure/Textbook/KirakiraALaMode/Instances.hs b/src/ACME/PreCure/Textbook/KirakiraALaMode/Instances.hs
new file mode 100644
--- /dev/null
+++ b/src/ACME/PreCure/Textbook/KirakiraALaMode/Instances.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module ACME.PreCure.Textbook.KirakiraALaMode.Instances where
+
+
+import           ACME.PreCure.Types.TH
+
+import           ACME.PreCure.Textbook.KirakiraALaMode.Types
+import           ACME.PreCure.Textbook.KirakiraALaMode.Words
+
+
+transformationInstance [t| Ichika |] [t| SweetsPact RabbitShortcake |] [t| CureWhip |] [| CureWhip |] (cureALaModeDecoration : introducesHerselfAs_CureWhip)
+transformationInstance [t| Himari |] [t| SweetsPact SquirrelPudding |] [t| CureCustard |] [| CureCustard |] (cureALaModeDecoration : introducesHerselfAs_CureCustard)
+transformationInstance [t| Aoi |] [t| SweetsPact LionIce |] [t| CureGelato |] [| CureGelato |] (cureALaModeDecoration : introducesHerselfAs_CureGelato)
+transformationInstance [t| Yukari |] [t| SweetsPact CatMacaron |] [t| CureMacaron |] [| CureMacaron |] (cureALaModeDecoration : introducesHerselfAs_CureMacaron)
+transformationInstance [t| Akira |] [t| SweetsPact DogChocolate |] [t| CureChocolat |] [| CureChocolat |] (cureALaModeDecoration : introducesHerselfAs_CureChocolat)
+
+transformationInstance
+  [t| (Ichika, Himari, Aoi, Yukari, Akira) |]
+  [t| (SweetsPact RabbitShortcake, SweetsPact SquirrelPudding, SweetsPact LionIce, SweetsPact CatMacaron, SweetsPact DogChocolate) |]
+  [t| (CureWhip, CureCustard, CureGelato, CureMacaron, CureChocolat) |]
+  [| (CureWhip, CureCustard, CureGelato, CureMacaron, CureChocolat) |]
+  ( kirakiraALaModeTransformationSpeech
+      [ introducesHerselfAs_CureWhip
+      , introducesHerselfAs_CureCustard
+      , introducesHerselfAs_CureGelato
+      , introducesHerselfAs_CureMacaron
+      , introducesHerselfAs_CureChocolat
+      ]
+    ++ [groupName_KirakiraALaMode ++ "！"]
+  )
+
+transformationInstance
+  [t| (Ichika, Himari, Aoi) |]
+  [t| (SweetsPact RabbitShortcake, SweetsPact SquirrelPudding, SweetsPact LionIce) |]
+  [t| (CureWhip, CureCustard, CureGelato) |]
+  [| (CureWhip, CureCustard, CureGelato) |]
+  ( kirakiraALaModeTransformationSpeech
+      [ introducesHerselfAs_CureWhip
+      , introducesHerselfAs_CureCustard
+      , introducesHerselfAs_CureGelato
+      ]
+  )
+
+transformationInstance
+  [t| (Ichika, Himari, Aoi, Yukari) |]
+  [t| (SweetsPact RabbitShortcake, SweetsPact SquirrelPudding, SweetsPact LionIce, SweetsPact CatMacaron) |]
+  [t| (CureWhip, CureCustard, CureGelato, CureMacaron) |]
+  [| (CureWhip, CureCustard, CureGelato, CureMacaron) |]
+  ( kirakiraALaModeTransformationSpeech
+      [ introducesHerselfAs_CureWhip
+      , introducesHerselfAs_CureCustard
+      , introducesHerselfAs_CureGelato
+      , introducesHerselfAs_CureMacaron
+      ]
+  )
+
+transformationInstance
+  [t| (Yukari, Akira) |]
+  [t| (SweetsPact CatMacaron, SweetsPact DogChocolate) |]
+  [t| (CureMacaron, CureChocolat) |]
+  [| (CureMacaron, CureChocolat) |]
+  ( kirakiraALaModeTransformationSpeech
+      [ introducesHerselfAs_CureMacaron
+      , introducesHerselfAs_CureChocolat
+      ]
+  )
+
+
+purificationInstance
+  [t| (CureWhip, CureCustard, CureGelato, CureMacaron, CureChocolat) |]
+  [t| CandyRod |]
+  [ "キャンディーロッド！"
+  , "キラキラキラル・フルチャージ！"
+  , "スイー・ツー・ワンダフル・アラモード！"
+  ]
diff --git a/src/ACME/PreCure/Textbook/KirakiraALaMode/Types.hs b/src/ACME/PreCure/Textbook/KirakiraALaMode/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/ACME/PreCure/Textbook/KirakiraALaMode/Types.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module ACME.PreCure.Textbook.KirakiraALaMode.Types where
+
+import           ACME.PreCure.Types.TH
+
+import           ACME.PreCure.Textbook.KirakiraALaMode.Words
+
+
+defineGirl "Ichika" "宇佐美 いちか"
+defineGirl "Himari" "有栖川 ひまり"
+defineGirl "Aoi" "立神 あおい"
+defineGirl "Yukari" "琴爪 ゆかり"
+defineGirl "Akira" "剣城 あきら"
+
+defineTransformedDefault "CureWhip" "キュアホイップ" $ concat introducesHerselfAs_CureWhip
+defineTransformedDefault "CureCustard" "キュアカスタード" $ concat introducesHerselfAs_CureCustard
+defineTransformedDefault "CureGelato" "キュアジェラート" $ concat introducesHerselfAs_CureGelato
+defineTransformedDefault "CureMacaron" "キュアマカロン" $ concat introducesHerselfAs_CureMacaron
+defineTransformedDefault "CureChocolat" "キュアショコラ" $ concat introducesHerselfAs_CureChocolat
+
+data SweetsPact s = SweetsPact s
+
+define "RabbitShortcake"
+define "SquirrelPudding"
+define "LionIce"
+define "CatMacaron"
+define "DogChocolate"
+
+define "CandyRod"
diff --git a/src/ACME/PreCure/Textbook/KirakiraALaMode/Words.hs b/src/ACME/PreCure/Textbook/KirakiraALaMode/Words.hs
new file mode 100644
--- /dev/null
+++ b/src/ACME/PreCure/Textbook/KirakiraALaMode/Words.hs
@@ -0,0 +1,18 @@
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+
+module ACME.PreCure.Textbook.KirakiraALaMode.Words where
+
+groupName_KirakiraALaMode = "キラキラ☆プリキュアアラモード"
+
+cureALaModeDecoration = "キュアラモード・デコレーション！"
+
+introducesHerselfAs_CureWhip     = ["ショートケーキ！", "元気と笑顔を！", "レッツ・ラ・まぜまぜ！", "キュアホイップ！できあがり！"]
+introducesHerselfAs_CureCustard  = ["プリン！", "知性と勇気を！", "レッツ・ラ・まぜまぜ！", "キュアカスタード！できあがり！"]
+introducesHerselfAs_CureGelato   = ["アイス！", "自由と情熱を！", "レッツ・ラ・まぜまぜ！", "キュアジェラート！できあがり！"]
+introducesHerselfAs_CureMacaron  = ["マカロン！", "美しさとトキメキを！", "レッツ・ラ・まぜまぜ！", "キュアマカロン！できあがり！"]
+introducesHerselfAs_CureChocolat = ["チョコレート！", "強さと愛を！", "レッツ・ラ・まぜまぜ！", "キュアショコラ！できあがり！"]
+
+kirakiraALaModeTransformationSpeech :: [[String]] -> [String]
+kirakiraALaModeTransformationSpeech [] = error "No transforamation speech given!"
+kirakiraALaModeTransformationSpeech al@(first:_) =
+  cureALaModeDecoration : init first ++ map last al
diff --git a/src/ACME/PreCure/Types/TH.hs b/src/ACME/PreCure/Types/TH.hs
--- a/src/ACME/PreCure/Types/TH.hs
+++ b/src/ACME/PreCure/Types/TH.hs
@@ -1,17 +1,71 @@
 {-# LANGUAGE TemplateHaskell #-}
 
-module ACME.PreCure.Types.TH where
+module ACME.PreCure.Types.TH
+        ( define
+        , defineGirl
+        , defineTransformed
+        , defineTransformedDefault
 
+        , girlInstance
+        , transformedInstance
+        , transformedInstanceDefault
+        , transformedGroupInstance
+        , transformedGroupInstanceDefault
+        , transformationInstance
 
+        , purificationInstance
+        , nonItemPurificationInstance
+        ) where
+
+
 import           ACME.PreCure.Types
 
+import           Language.Haskell.TH
+                   ( Name
+                   , conT
+                   , mkName
+                   )
+import           Language.Haskell.TH.Compat.Data
+                   ( dataD'
+                   )
 import           Language.Haskell.TH.Lib
                    ( DecsQ
+                   , DecQ
                    , ExpQ
                    , TypeQ
+                   , cxt
                    , listE
+                   , normalC
                    , stringE
                    )
+
+singletonDataD :: Name -> DecQ
+singletonDataD name =
+  dataD' (cxt []) name [] [normalC name []] [''Show, ''Eq]
+
+
+define :: String -> DecsQ
+define string = (:[]) <$> singletonDataD (mkName string)
+
+
+defineWith :: Name -> DecsQ -> DecsQ
+defineWith name decsq = (:) <$> singletonDataD name <*> decsq
+
+
+defineGirl :: String -> String -> DecsQ
+defineGirl string humanN = do
+  let name = mkName string
+  defineWith name $ girlInstance (conT name) humanN
+
+
+defineTransformed :: String -> String -> String -> String -> DecsQ
+defineTransformed string cureN intro vari = do
+  let name = mkName string
+  defineWith name $ transformedInstance (conT name) cureN intro vari
+
+
+defineTransformedDefault :: String -> String -> String -> DecsQ
+defineTransformedDefault string cureN intro = defineTransformed string cureN intro ""
 
 
 girlInstance :: TypeQ -> String -> DecsQ
diff --git a/typesafe-precure.cabal b/typesafe-precure.cabal
--- a/typesafe-precure.cabal
+++ b/typesafe-precure.cabal
@@ -1,5 +1,5 @@
 name:                typesafe-precure
-version:             0.2.0.0
+version:             0.3.0.0
 synopsis:            Type-safe transformations and purifications of PreCures (Japanese Battle Heroine)
 description:         See README.md for details.
 homepage:            https://github.com/igrep/typesafe-precure#readme
@@ -7,7 +7,7 @@
 license-file:        LICENSE
 author:              Yuji Yamamoto
 maintainer:          whosekiteneverfly@gmail.com
-copyright:           2016 Yuji Yamamoto
+copyright:           2017 Yuji Yamamoto
 category:            ACME
 build-type:          Simple
 -- extra-source-files:
@@ -75,14 +75,21 @@
                      , ACME.PreCure.Textbook.MahoGirls.Types
                      , ACME.PreCure.Textbook.MahoGirls.Words
 
+                     , ACME.PreCure.Textbook.KirakiraALaMode
+
                      , ACME.PreCure.Types
                      , ACME.PreCure.Monad
   other-modules:       ACME.PreCure.Types.TH
+                     , ACME.PreCure.Textbook.KirakiraALaMode.Instances
+                     , ACME.PreCure.Textbook.KirakiraALaMode.Types
+                     , ACME.PreCure.Textbook.KirakiraALaMode.Words
   build-depends:       base >= 4.7 && < 5
                      -- TODO: specify version
+                     , autoexporter
                      , monad-skeleton
                      , dlist
                      , template-haskell
+                     , th-data-compat
   default-language:    Haskell2010
 
 test-suite typesafe-precure-test
