use lambdas instead of macros
make DomNode vs PostDomNode more typesafe