contract Base is ERC721Token, MultiOwners {

  event NewCRLToken(address indexed owner, uint256 indexed tokenId, uint256 traits);
  event UpdatedCRLToken(uint256 indexed UUID, uint256 indexed tokenId, uint256 traits);

  uint256 TOKEN_UUID;
  uint256 UPGRADE_UUID;

  function _createToken(address _owner, uint256 _traits) internal {
    // emit the creaton event
    NewCRLToken(
      _owner,
      TOKEN_UUID,
      _traits
    );

    // This will assign ownership, and also emit the Transfer event
    _mint(_owner, TOKEN_UUID);

    TOKEN_UUID++;
  }

  function _updateToken(uint256 _tokenId, uint256 _traits) internal {
    // emit the creaton event
    UpdatedCRLToken(
      UPGRADE_UUID,
      _tokenId,
      _traits
    );

    UPGRADE_UUID++;
  }

  // Eth balance controls

  // We can withdraw eth balance of contract.
  function withdrawBalance() onlyOwner external {
    require(this.balance > 0);

    msg.sender.transfer(this.balance);
  }
}
function withdrawBalance() onlyOwner external {
  require(this.balance > 0);

  msg.sender.transfer(this.balance);
}

// Eth balance controls
// We can withdraw eth balance of contract.