Mark, Thanks you this is an interesting proposal. I can see how many of the "magics" provided by IPython/Jupyter could also be replaced by some of those macros. A couple of questions – which I understand could be delegated to further improvement to macros in a subsequent proposal. - I'm not sure I see how these macros could take parameters ? For example `timeit` in IPython takes a number of options on the number of repetitions and the number of innerloop for really fast code. I'm not sure how this would be done with your proposal, would stmt_macro!(options): multi_statement_body Be something you consider for a later iteration? I might be missing how to do it, apologies about this if its the case. passing parameters also likely apply to siblings macros? - especially for statement_macros, have you considered to relax the syntax inside the block, and pass the string of the dedented block to the macross processor (or have it as an option). That would make it quite easier to embed non-python syntax, and allow to convert a much larger chunk of the IPython/Jupyter magics to macros. Thanks, -- Matthias