    function approveAndCall(address spender, uint256 tokenAmount, bytes extraData) external returns (bool success) {
        tokenRecipient _spender = tokenRecipient(spender);
        if (_approve(spender, tokenAmount)) {
            _spender.receiveApproval(msg.sender, tokenAmount, this, extraData);
            return true;
        }
        return false;
    }