An arbitrary type that contains a position and content.
A layer can be positioned anywhere in the console, and it can instead be edited as a string without manual manipulation of the cursor.
An arbitrary type that derives from Layer however can handle both X and Y coordinates.
A Layer2D contains an (2D) array of layers allowing them to be rendered in a container and be indexed as such.