* Abstract player into character so can be reused for other characters
* Only refresh surfaces which have changed
* Bind the player to the cell which it is in
* Allow for overflowing surfaces