#4 add controllers and middlewares