interface IAdministrator { 
    void reset(); 
    // throws out all players, picks new pair of barter cards
    // and a new deck of cards

    void registerPlayer(String name, IPlayer p); 
    // make and register a player (with given name for a game)

    String playGame(int n); 
    // play n rounds of the game, then produce an announcement 
    // about winners
}

interface IPlayer {
    void tell(Color pebble0, Equation[] barter); 
    // the player is given a first pebble and is told about
    // the equations

    void takeTurn(Card[] cc, ITurn t); 
    // the player is granted a turn and informed of current deck
    // of cards
    
    void inform(String s); 
    // server informs player of something 
}

interface ITurn {
    Color rollDie(Color d); 
    // roll the die; if it's a star, return d

    void trade(Color[] i, Color[] o); 
    // trade in i pebbles for o pebbles, i = o must be an equation 

    int buyCard(Card c); 
    // buy card c, obtain score in return 
}
