3.0 middleware events with route