Domain layer + Middleware