glad you asked that! All the repositories are packed up in a struct and passed into InitControllers in controllers.go. You can then pick and choose which repositories to inject into each controller. If you look at the InitController function in usercontroller.go, it only has access to UserRepo since it's the only repository passed into it. This way you can re-use the repositories in different controllers, and the controllers will be agnostic with regard to the implementation of each repository. (Maybe I should rename the repositories to services or something...idk lol)