modified (uncompilable : must implement Dispatcher)