clear separation of concerns between layers middleware/handler/view and inside layer