rewrite out/err as basic macros
macros attempt to remove static string concatenation at compile time