use macros + stdlib only, arbitrarily deep nesting