def router(self):
        """
        Property returning the router at the top of the middleware
        chain's stack (the last item in the list). If the list is empty
        OR the item is not an instance of growler.Router, one is created
        and added to the middleware chain, matching all requests.
        """
        if not self.has_root_router:
            self.middleware.add(HTTPMethod.ALL,
                                MiddlewareChain.ROOT_PATTERN,
                                Router())
        return self.middleware.last().func