I'm building an iTunes Style app backed by core data. Here is a somewhat simplified version of the classes and the .xib files (in the MainWindow there is a splitviews, a NSToolbar, some tabless NSTabViews, and placeholder views that get replaced at launch, but for discussion purposes this is is the relevant object graph): The MainWindowController loads in the detailViews via tabless tabviews, and within the particular detailView.xib I'm working on is an NSTableView that I would like to populate via bindings, based on the current selection in the source list. My detail view has an NSArrayController in entity mode that's ready to wire up to the table, but I'm not sure how to grab the reference to the current selection in the other .xib in a way that preserves loose coupling and good class design. I've built tutorial apps that can handle what I'm trying to do when everything is in the same .xib, but I'm trying to observe good object oriented design practices with this app, and have broken things into separate chunks for expandability, maintainability, and reusability. What is the most correct way of inter-class communication in this situation?