make dispatch a macro, code_dup--