Feature complete template haskell implementation