pass caller=None to all calls, so caller() can be used in macros outside of brackets