The game is built on three abstract concepts: view, logic, and data.
View - all monobehaviours.
Logic - Logic.cs static class that contains functions that change state based on the
config and user input.
Data - state and config.
The essential part is data(config and state), the view is receiving user input, and makes a call
to logic that changes state based on config.