get rid of `expose` method on `Dispatcher`.  Use functions instead
break everything out into seperate modules