update with macro syntax and some other stuff