Adopted from http://www.daedtech.com/tdd-and-modeling-a-chess-game