
TODO: 

 -- find uses of board interface functions and see how often they are
    composed with tile-row and tile-column # replace with spot functions 

 -- figure out where shares-available is replacable by shares-available?

 -- module+ test should import self to get contracts checked 

 -- internal-state should go to state 

;; this error check needs to go into the contract between the player and the admin 
#;
[(eq? FOUNDING s) 
       (if hotel
           (state-place-tile tree placement hotel)
           (if (empty? (state-hotels tree))
               (state-place-tile tree placement)
               (error 'rule-check "player tried to get around founding a hotel")))]

The game consists of two pieces: 

===============================================================================
external players, potentially supplied by others 

   strategy | strategy-intf 
      |
      |
      V
   player | player-intf 
      |
===============================================================================
the game administrator, which runs Acquire games 
      |
      v
   game        | game-intf  <==== entry point to play
      |
      +------------------+------------------+--------------...
      ^                  ^                  ^
      |                  |                  |
      |                  |                  |
   internal-state-intf   board-intf         basics-intf
   internal-state        board              basics 

===============================================================================
basic libraries (unrelated to game): 

  Lib/ 

===============================================================================
testing stages

  Board/
  State/ 
  Player/
  Game/ 

  Performance/ :: this is interesting to Vincent and Christos

 
