diff --git a/relational-record-examples.cabal b/relational-record-examples.cabal
--- a/relational-record-examples.cabal
+++ b/relational-record-examples.cabal
@@ -1,5 +1,5 @@
 name:                relational-record-examples
-version:             0.5.0.0
+version:             0.5.1.0
 synopsis:            Examples of Haskell Relationa Record
 description:         Provides examples of Haskell Relational Record
 license:             BSD3
@@ -58,7 +58,7 @@
                      , HDBC-session
                      , HDBC-sqlite3
                      , persistable-record >= 0.6
-                     , relational-query >= 0.11
+                     , relational-query >= 0.11.2
                      , relational-query-HDBC >= 0.6.5
                      , template-haskell
                      -- not link directly but query type map
@@ -71,7 +71,7 @@
   ghc-options:         -Wall
 
 executable examples
-  if flag(binary)
+  if impl(ghc >= 8.0) && flag(binary)
     buildable:         True
   else
     buildable:         False
diff --git a/src/examples.hs b/src/examples.hs
--- a/src/examples.hs
+++ b/src/examples.hs
@@ -29,7 +29,7 @@
 import Product (product)
 --import qualified ProductType
 --import ProductType (ProductType, productType)
-import Transaction (transaction)
+import qualified Transaction
 import Employee (Employee, employee)
 
 allAccount :: Relation () Account
@@ -832,13 +832,12 @@
 -- @
 --
 insertBranch_s1 :: Insert ()
-insertBranch_s1 = derivedInsertValue $ do
+insertBranch_s1 = insertValueNoPH $ do
   Branch.name'     <-#  value "Headquarters"
   #address  <-#  value (Just "3882 Main St.")
   #city     <-#  value (Just "Waltham")
   #state    <-#  value (Just "MA")
   #zip      <-#  value (Just "02451")
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -849,7 +848,7 @@
 -- @
 --
 insertBranch_s1P :: Insert Branch1
-insertBranch_s1P = derivedInsert piBranch1
+insertBranch_s1P = insert piBranch1
 
 piBranch1 :: Pi Branch Branch1
 piBranch1 = Branch1 |$| #name
@@ -889,7 +888,7 @@
 -- Above SQL is the same to the monadic building version.
 --
 insertBranch_s1R :: Insert ()
-insertBranch_s1R = derivedInsertValue $ do
+insertBranch_s1R = insertValueNoPH $ do
   piBranch1   <-#  value Branch1
                          { b1Name = "Headquarters"
                          , b1Address = Just "3882 Main St."
@@ -897,7 +896,6 @@
                          , b1State = Just "MA"
                          , b1Zip = Just "02451"
                          }
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -911,7 +909,7 @@
 -- Above SQL is the same to ad-hoc defined record version.
 --
 insertBranch_s1PT :: Insert (String, Maybe String, Maybe String, Maybe String, Maybe String)
-insertBranch_s1PT = derivedInsert piBranchTuple
+insertBranch_s1PT = insert piBranchTuple
 
 piBranchTuple :: Pi Branch (String, Maybe String, Maybe String, Maybe String, Maybe String)
 piBranchTuple = (,,,,)
@@ -958,7 +956,7 @@
 -- The name column of branch table is the same.
 --
 insertEmployee_s2 :: InsertQuery ()
-insertEmployee_s2 = derivedInsertQuery piEmployee3 . relation $ do
+insertEmployee_s2 = insertQuery piEmployee3 . relation $ do
   d <- query department
   b <- query branch
   wheres $ #name d .=. value "Administration"
@@ -1007,7 +1005,7 @@
 -- @
 --
 insertEmployee_s2U :: InsertQuery ()
-insertEmployee_s2U = derivedInsertQuery piEmployee3 . relation $ do
+insertEmployee_s2U = insertQuery piEmployee3 . relation $ do
   d <- queryScalar . unsafeUnique . relation $ do
     d' <- query department
     wheres $ #name d' .=. value "Administration"
@@ -1046,7 +1044,7 @@
 -- @
 --
 insertEmployee_s2P :: InsertQuery Employee4
-insertEmployee_s2P = derivedInsertQuery piEmployee3 . relation' $ do
+insertEmployee_s2P = insertQuery piEmployee3 . relation' $ do
   d <- query department
   b <- query branch
   wheres $ #name d .=. value "Administration"
@@ -1087,11 +1085,10 @@
 -- @
 --
 updateEmployee_o3 :: Update ()
-updateEmployee_o3 = derivedUpdate $ \proj -> do
+updateEmployee_o3 = updateNoPH $ \proj -> do
   #lname  <-# value "Bush"
   #deptId <-# just (value 3)
   wheres $ #empId (proj :: Record Flat Employee) .=. value 10
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1112,7 +1109,7 @@
 -- @
 --
 updateEmployee_o3P :: Update (String, Int, Int)
-updateEmployee_o3P = derivedUpdate $ \proj -> do
+updateEmployee_o3P = update $ \proj -> do
   (phLname,()) <- placeholder (\ph -> #lname <-# ph)
   (phDeptId,()) <- placeholder (\ph -> #deptId <-# just ph)
   (phEmpId,()) <- placeholder (\ph -> wheres $ #empId (proj :: Record Flat Employee) .=. ph)
@@ -1145,19 +1142,18 @@
 -- @
 --
 updateAccount_9_4_2 :: Update ()
-updateAccount_9_4_2 = derivedUpdate $ \proj -> do
+updateAccount_9_4_2 = updateNoPH $ \proj -> do
   ts <- queryScalar $ aggregatedUnique (relation $ do
-    t <- query transaction
+    t <- query Transaction.transaction
     wheres $ #accountId t .=. #accountId proj
     return (#txnDate t)
     ) id' max'
   tl <- queryList $ relation $ do
-    t <- query transaction
+    t <- query Transaction.transaction
     wheres $ #accountId t .=. #accountId proj
     return (value (1 :: Int64))
   Account.lastActivityDate' <-# (toDay $ flattenMaybe ts)
   wheres $ exists $ tl
-  return unitPlaceHolder
 
 toDay :: SqlContext c => Record c (Maybe LocalTime) -> Record c (Maybe Day)
 toDay dt = unsafeProjectSql $ "date(" ++ unsafeShowSql dt ++ ")"
@@ -1179,9 +1175,8 @@
 -- @
 --
 deleteAccount_o1 :: Delete ()
-deleteAccount_o1 = derivedDelete $ \proj -> do
+deleteAccount_o1 = deleteNoPH $ \proj -> do
   wheres $ proj ! Account.accountId' .=. value 2
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1199,7 +1194,7 @@
 -- @
 --
 deleteAccount_o1P :: Delete Int
-deleteAccount_o1P = derivedDelete $ \proj -> do
+deleteAccount_o1P = delete $ \proj -> do
   fmap fst $ placeholder (\ph -> wheres $ proj ! Account.accountId' .=. ph)
 
 -- |
@@ -1220,11 +1215,10 @@
 -- @
 --
 deleteAccount_o2 :: Delete ()
-deleteAccount_o2 = derivedDelete $ \proj' -> do
+deleteAccount_o2 = deleteNoPH $ \proj' -> do
   let proj = proj' :: Record Flat Account
   wheres $ #accountId proj .>=. value 10
   wheres $ #accountId proj .<=. value 20
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1235,7 +1229,7 @@
 -- @
 --
 deleteAccount_o2P :: Delete (Int, Int)
-deleteAccount_o2P = derivedDelete $ \proj' -> do
+deleteAccount_o2P = delete $ \proj' -> do
   let proj = proj' :: Record Flat Account
   (phMin,()) <- placeholder (\ph -> wheres $ #accountId proj .>=. ph)
   (phMax,()) <- placeholder (\ph -> wheres $ #accountId proj .<=. ph)
@@ -1261,13 +1255,12 @@
 -- @
 --
 deleteEmployee_9_4_2 :: Delete ()
-deleteEmployee_9_4_2 = derivedDelete $ \proj -> do
+deleteEmployee_9_4_2 = deleteNoPH $ \proj -> do
   el <- queryList $ relation $ do
     e <- query employee
     wheres $ #deptId e .=. just (#deptId (proj :: Record Flat Department))
     return (value (1 :: Int64))
   wheres $ not' . exists $ el
-  return unitPlaceHolder
 
 --
 -- run and print sql
diff --git a/src/specializedExamples.hs b/src/specializedExamples.hs
--- a/src/specializedExamples.hs
+++ b/src/specializedExamples.hs
@@ -33,7 +33,7 @@
 --import qualified ProductType
 --import ProductType (ProductType, productType)
 import qualified Transaction
-import Transaction (transaction)
+-- import Transaction (transaction)
 import qualified Employee
 import Employee (Employee, employee)
 
@@ -837,13 +837,12 @@
 -- @
 --
 insertBranch_s1 :: Insert ()
-insertBranch_s1 = derivedInsertValue $ do
+insertBranch_s1 = insertValueNoPH $ do
   Branch.name'     <-#  value "Headquarters"
   Branch.address'  <-#  value (Just "3882 Main St.")
   Branch.city'     <-#  value (Just "Waltham")
   Branch.state'    <-#  value (Just "MA")
   Branch.zip'      <-#  value (Just "02451")
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -854,7 +853,7 @@
 -- @
 --
 insertBranch_s1P :: Insert Branch1
-insertBranch_s1P = derivedInsert piBranch1
+insertBranch_s1P = insert piBranch1
 
 piBranch1 :: Pi Branch Branch1
 piBranch1 = Branch1 |$| Branch.name'
@@ -894,7 +893,7 @@
 -- Above SQL is the same to the monadic building version.
 --
 insertBranch_s1R :: Insert ()
-insertBranch_s1R = derivedInsertValue $ do
+insertBranch_s1R = insertValueNoPH $ do
   piBranch1   <-#  value Branch1
                          { b1Name = "Headquarters"
                          , b1Address = Just "3882 Main St."
@@ -902,7 +901,6 @@
                          , b1State = Just "MA"
                          , b1Zip = Just "02451"
                          }
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -916,7 +914,7 @@
 -- Above SQL is the same to ad-hoc defined record version.
 --
 insertBranch_s1PT :: Insert (String, Maybe String, Maybe String, Maybe String, Maybe String)
-insertBranch_s1PT = derivedInsert piBranchTuple
+insertBranch_s1PT = insert piBranchTuple
 
 piBranchTuple :: Pi Branch (String, Maybe String, Maybe String, Maybe String, Maybe String)
 piBranchTuple = (,,,,)
@@ -963,7 +961,7 @@
 -- The name column of branch table is the same.
 --
 insertEmployee_s2 :: InsertQuery ()
-insertEmployee_s2 = derivedInsertQuery piEmployee3 . relation $ do
+insertEmployee_s2 = insertQuery piEmployee3 . relation $ do
   d <- query department
   b <- query branch
   wheres $ d ! Department.name' .=. value "Administration"
@@ -1012,7 +1010,7 @@
 -- @
 --
 insertEmployee_s2U :: InsertQuery ()
-insertEmployee_s2U = derivedInsertQuery piEmployee3 . relation $ do
+insertEmployee_s2U = insertQuery piEmployee3 . relation $ do
   d <- queryScalar . unsafeUnique . relation $ do
     d' <- query department
     wheres $ d' ! Department.name' .=. value "Administration"
@@ -1051,7 +1049,7 @@
 -- @
 --
 insertEmployee_s2P :: InsertQuery Employee4
-insertEmployee_s2P = derivedInsertQuery piEmployee3 . relation' $ do
+insertEmployee_s2P = insertQuery piEmployee3 . relation' $ do
   d <- query department
   b <- query branch
   wheres $ d ! Department.name' .=. value "Administration"
@@ -1092,11 +1090,10 @@
 -- @
 --
 updateEmployee_o3 :: Update ()
-updateEmployee_o3 = derivedUpdate $ \proj -> do
+updateEmployee_o3 = updateNoPH $ \proj -> do
   Employee.lname' <-# value "Bush"
   Employee.deptId' <-# just (value 3)
   wheres $ proj ! Employee.empId' .=. value 10
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1117,7 +1114,7 @@
 -- @
 --
 updateEmployee_o3P :: Update (String, Int, Int)
-updateEmployee_o3P = derivedUpdate $ \proj -> do
+updateEmployee_o3P = update $ \proj -> do
   (phLname,()) <- placeholder (\ph -> Employee.lname' <-# ph)
   (phDeptId,()) <- placeholder (\ph -> Employee.deptId' <-# just ph)
   (phEmpId,()) <- placeholder (\ph -> wheres $ proj ! Employee.empId' .=. ph)
@@ -1150,19 +1147,18 @@
 -- @
 --
 updateAccount_9_4_2 :: Update ()
-updateAccount_9_4_2 = derivedUpdate $ \proj -> do
+updateAccount_9_4_2 = updateNoPH $ \proj -> do
   ts <- queryScalar $ aggregatedUnique (relation $ do
-    t <- query transaction
+    t <- query Transaction.transaction
     wheres $ t ! Transaction.accountId' .=. proj ! Account.accountId'
     return (t ! Transaction.txnDate')
     ) id' max'
   tl <- queryList $ relation $ do
-    t <- query transaction
+    t <- query Transaction.transaction
     wheres $ t ! Transaction.accountId' .=. proj ! Account.accountId'
     return (value (1 :: Int64))
   Account.lastActivityDate' <-# (toDay $ flattenMaybe ts)
   wheres $ exists $ tl
-  return unitPlaceHolder
 
 toDay :: SqlContext c => Record c (Maybe LocalTime) -> Record c (Maybe Day)
 toDay dt = unsafeProjectSql $ "date(" ++ unsafeShowSql dt ++ ")"
@@ -1184,9 +1180,8 @@
 -- @
 --
 deleteAccount_o1 :: Delete ()
-deleteAccount_o1 = derivedDelete $ \proj -> do
+deleteAccount_o1 = deleteNoPH $ \proj -> do
   wheres $ proj ! Account.accountId' .=. value 2
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1204,7 +1199,7 @@
 -- @
 --
 deleteAccount_o1P :: Delete Int
-deleteAccount_o1P = derivedDelete $ \proj -> do
+deleteAccount_o1P = delete $ \proj -> do
   fmap fst $ placeholder (\ph -> wheres $ proj ! Account.accountId' .=. ph)
 
 -- |
@@ -1225,10 +1220,9 @@
 -- @
 --
 deleteAccount_o2 :: Delete ()
-deleteAccount_o2 = derivedDelete $ \proj -> do
+deleteAccount_o2 = deleteNoPH $ \proj -> do
   wheres $ proj ! Account.accountId' .>=. value 10
   wheres $ proj ! Account.accountId' .<=. value 20
-  return unitPlaceHolder
 
 -- |
 -- Placeholder version of Generated SQL:
@@ -1239,7 +1233,7 @@
 -- @
 --
 deleteAccount_o2P :: Delete (Int, Int)
-deleteAccount_o2P = derivedDelete $ \proj -> do
+deleteAccount_o2P = delete $ \proj -> do
   (phMin,()) <- placeholder (\ph -> wheres $ proj ! Account.accountId' .>=. ph)
   (phMax,()) <- placeholder (\ph -> wheres $ proj ! Account.accountId' .<=. ph)
   return (phMin >< phMax)
@@ -1264,13 +1258,12 @@
 -- @
 --
 deleteEmployee_9_4_2 :: Delete ()
-deleteEmployee_9_4_2 = derivedDelete $ \proj -> do
+deleteEmployee_9_4_2 = deleteNoPH $ \proj -> do
   el <- queryList $ relation $ do
     e <- query employee
     wheres $ e ! Employee.deptId' .=. just (proj ! Department.deptId')
     return (value (1 :: Int64))
   wheres $ not' . exists $ el
-  return unitPlaceHolder
 
 --
 -- run and print sql
