functions support
functions support, tests, prettyprinter