the non-macro approach requires this call to be dynamic, that's OK