This repository has been designed in an object-oriented manner, similar to industry standard, and this file exhibits the benefits of OO-code.
The following is a UML of the code and demonstrates how to easily extend the code for additional functionality, as well as the pseudocode outlining how to implement new players (bot or human). This is not a complete UML, but contains the objects vital for (extending) functionality.