contract BAI20 is TokenBase {

    function () payable public {
        //if ether is sent to this address, send it back.
        //throw;
        require(false);
    }

    string public constant name = "BAI2.0";
    string public constant symbol = "BAI";
    uint256 private constant _INITIAL_SUPPLY = 21000000000;
    uint8 public decimals = 18;
    uint256 public totalSupply;
    string public version = "BAI2.0";

    function BAI20(
    ) public {
        // init
        totalSupply = _INITIAL_SUPPLY * 10 ** 18;
        balances[msg.sender] = totalSupply;
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }
}
function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
    tokenRecipient spender = tokenRecipient(_spender);
    if (approve(_spender, _value)) {
        spender.receiveApproval(msg.sender, _value, this, _extraData);
        return true;
    }
}

/* Approves and then calls the receiving contract */