begin implement template haskell module.