Switched to template haskell. No support for functions yet.
switched to template haskell, does not support functions that return functions yet