Separated the existing Controller.cs class into various different classes. Changed the name of the Controller.cs class to ControllerUser.cs, as it is not the actual Controller, but a user of a Controller. Changed the IBattleshipController.cs interface to an abstract class. It makes more sense to be developing a Controller, rather than be developing a controller implementing a controller interface. It will also allow new functions to be added to the Controller base class without breaking existing functionality. A ControllerRegister has been added to the shared framework that contains information about a certain controller in a match, and is easily shared across the core framework. The Controller has a perfect copy of this ControllerRegister, meaning it cannot change the competition's actual reference to the object. Also, added a ConfigurationAttribute.cs attribute that allows default values to be specified without the need to explicitly define a specifically named method that sets default configuration values.