CoinFlip is a journey in object oriented design