add match Events to DynamicRouter
include Request object in Event
add empty line at eof
add comments
add missing comments
make event handler optional, add a test