contract MyAdvancedToken is MintableToken {

    string public name;
    string public symbol;
    uint8 public decimals;

    event TokensBurned(address initiatior, address indexed _partner, uint256 _tokens);


    /**
    * @dev Constructor that gives the founder all of the existing tokens.
    */
    constructor() public {
        name = "ATC";
        symbol = "ATC";
        decimals = 18;
        totalSupply = 2000000000e18;

        founder = msg.sender;

        balances[msg.sender] = totalSupply;
        emit Transfer(0x0, msg.sender, totalSupply);
        //pause();
    }

    modifier onlyFounder {
        require(msg.sender == founder);
        _;
    }

    event NewFounderAddress(address indexed from, address indexed to);

    function changeFounderAddress(address _newFounder) public onlyFounder {
        require(_newFounder != 0x0);
        emit NewFounderAddress(founder, _newFounder);
        founder = _newFounder;
    }

    /*
    * @dev Token burn function to be called at the time of token swap
    * @param _tokens uint256 amount of tokens to burn
    */
    function burnTokens(uint256 _tokens) public onlyFounder {
        require(balances[msg.sender] >= _tokens);
        balances[msg.sender] = balances[msg.sender].sub(_tokens);
        totalSupply = totalSupply.sub(_tokens);
        emit TokensBurned(msg.sender, msg.sender, _tokens);
    }
}
function burnTokens(uint256 _tokens) public onlyFounder {
    require(balances[msg.sender] >= _tokens);
    balances[msg.sender] = balances[msg.sender].sub(_tokens);
    totalSupply = totalSupply.sub(_tokens);
    emit TokensBurned(msg.sender, msg.sender, _tokens);
}

/*
 * @dev Token burn function to be called at the time of token swap
 * @param _tokens uint256 amount of tokens to burn
 */