implemented a custom dispatcher