- still working on macro version, using roughly same techniques as the
  closure version, except everything is more closely integerated