I'm coding a school project that involves MVC and threading.This is my Main class. From there I launch the actual client.public class Main {    public static void main(String[] args) {        Controller myController = new Controller();        ScreenModel screenModel = new ScreenModel();        ChessBoardModel chessBoardModel = new ChessBoardModel();        ChessBoard chessBoardView = new ChessBoard(myController);        View myView = new View(myController, chessBoardView);        chessBoardModel.addObserver(chessBoardView);        screenModel.addObserver(myView);        myController.addModel(screenModel);        myController.addChessBoardModel(chessBoardModel);        myController.addView(myView);    }}Is this too messy? I essentially have one model, the ScreenModel, that handles moving back and forth between screens and another model which handles the Chess Board. Here's my controller:public class Controller {    ScreenModel model;    View view;    User user = new User();    ClientSocketManager csm;        ChessBoardModel chessBoardModel;    /**     * Called when the user logs in.     */    public Controller() {        csm  = new ClientSocketManager();        csm.connect(localhost, 4444);    }    public void login() {        //Create userdata object upon login.        model.handleLogin();    }    /**     * Called when the user creates a game (from the main menu or the join game/games in progress screens)     */    public void createGame() {        model.handleCreateGame();    }    /**     * Called when the user clicks on the Join Game button in the main menu.     */    public void joinGameButton() {        model.handleJoinGameButton();    }    /**     * Called when the user chooses a game clicks on the join button.     */    public void joinGame() {        model.handleJoinGame();    }    /**     * Called when the user clicks on the My Games in Progress button.     */    public void myGamesInProgress() {        model.handleMyGamesInProgress();    }    /**     * Called when user cancels joining a new game or joining a game in progress.     */    public void cancel() {        model.handleCancel();    }    /**     * Handles making a move from the chess board.     * @param from   The non-empty from square.     * @param to     The non-empty to square.     */    public void makeMove(Cell from, Cell to) {        chessBoardModel.handleMakeMove(from,to);    }    /**     * Methods related to the Chess Board game in progress     */    /**     * Called when the user clicks on the back button inside the Chess Board screen.     */    public void back() {        model.handleBack();    }    /**     * Chess Board Screen methods below     */    public void offerDraw() {        chessBoardModel.handleOfferDraw();    }    public void resign() {        chessBoardModel.handleResign();    }    /**     * Handles flipping the board from the Chess Board Screen     */    public void flipBoard() {        chessBoardModel.handleFlipBoard();    }    /**     * Methods for adding models and views.     * @param m     */    public void addModel(ScreenModel m){        this.model = m;        m.setUser(user);    }    public void addChessBoardModel(ChessBoardModel c) {        this.chessBoardModel = c;        c.setUser(user);    }    public void addView(View v){        this.view = v;    }}Is the controller the appropriate place for the ClientSocketManager, or should it be placed inside the model? What do you think of the rest of my controller?
Java MVC Main Method and Controller
java;mvc