Open closed principle

Opened a pull request for comments
game_loop below could also use some cleaning up.  What is the difference between player, current_player, and players? I can't see how ```player``` is ever changed.  Also, what is the difference between ```board``` and ```current_board```