add dispach macro
use new dispatch