contract Blacklisted is Administrator {
	mapping (address => bool) public blacklist;

	event SetBlacklist(address indexed _address, bool _bool);

	/**
	* @dev Modifier: throw if _address is in the blacklist
	*/
	modifier notInBlacklist(address _address) {
		require(!blacklist[_address], "Is in Blacklist");
		_;
	}

	/**
	* @dev call by the owner, set/unset single _address into the blacklist
	*/
	function setBlacklist(address _address, bool _bool) public onlyOwnerOrAdmin {
		require(_address != address(0));
		
		if(_bool) {
		    require(!blacklist[_address], "Already in blacklist");
		} else {
		    require(blacklist[_address], "Not in blacklist yet");
		}
		
		blacklist[_address] = _bool;
		emit SetBlacklist(_address, _bool);
	}
}
/**
 * @title Blacklisted
 * @dev allow contract owner or administator to add/remove address to/from the blacklist
 */
function setBlacklist(address _address, bool _bool) public onlyOwnerOrAdmin {
	require(_address != address(0));
		
	if(_bool) {
	    require(!blacklist[_address], "Already in blacklist");
	} else {
	    require(blacklist[_address], "Not in blacklist yet");
	}
		
	blacklist[_address] = _bool;
	emit SetBlacklist(_address, _bool);
}

/**
 	* @dev call by the owner, set/unset single _address into the blacklist
 	*/