added listener and local dispatching