template haskell all works