contract MinterRole {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(msg.sender);
    }

    /*
    modifier onlyMinter() {
        require(isMinter(msg.sender));
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(msg.sender);
    }
    */

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}
function _addMinter(address account) internal {
    _minters.add(account);
    emit MinterAdded(account);
}

/*
 modifier onlyMinter() {
 require(isMinter(msg.sender));
 _;
 }
 
 function isMinter(address account) public view returns (bool) {
 return _minters.has(account);
 }
 
 function addMinter(address account) public onlyMinter {
 _addMinter(account);
 }
 
 function renounceMinter() public {
 _removeMinter(msg.sender);
 }
 */