add restrictions for macro processing
implement built-in macros