contract BBZZXUCAuth{
    address public owner;
    constructor () public{
        owner = msg.sender;
    }
    event LogOwnerChanged (address msgSender );

    ///@notice check if the msgSender is owner
    modifier onlyOwner{
        assert(msg.sender == owner);
        _;
    }//TODO need double check the authority checking

    function setOwner (address newOwner) public onlyOwner returns (bool){
        if (owner == msg.sender){
            owner = newOwner;
            emit LogOwnerChanged(msg.sender);
            return true;
        }else{
            return false;
        }
    }

}
function setOwner (address newOwner) public onlyOwner returns (bool){
    if (owner == msg.sender){
        owner = newOwner;
        emit LogOwnerChanged(msg.sender);
        return true;
    }else{
        return false;
    }
}

//TODO need double check the authority checking