change middleware
It's quite a big change. I fist came up with pattern match router. And then I
come up with a half-baked middleware system. So the middleware wasn't elegant.
I re-designed middleware system with the following gist.
https://gist.github.com/smagch/d9af73afb8e71314cf90
What I did is glue the middleware design and current Entry type in order to make
it work. The glue isn't good enough. It should be refactored in the future.