contract MultiOwnable {
    
    address[2] public owners;

    event OwnershipTransferred(address from, address to);
    event OwnershipGranted(address to);

    function MultiOwnable() public {
        owners[0] = 0x1d554c421182a94E2f4cBD833f24682BBe1eeFe8; //R1
        owners[1] = 0x0D7a2716466332Fc5a256FF0d20555A44c099453; //R2
    }

    /**
     * Functions with this modifier will only execute if the the function is called by the 
     * owners of the contract.
     * */ 
    modifier onlyOwners {
        require(msg.sender == owners[0] || msg.sender == owners[1]);
        _;
    }

    /**
     * Trasfers ownership from the owner who executes the function to another given address.
     * 
     * @param _newOwner The address which will be granted ownership.
     * */
    function transferOwnership(address _newOwner) public onlyOwners {
        require(_newOwner != 0x0 && _newOwner != owners[0] && _newOwner != owners[1]);
        if (msg.sender == owners[0]) {
            OwnershipTransferred(owners[0], _newOwner);
            owners[0] = _newOwner;
        } else {
            OwnershipTransferred(owners[1], _newOwner);
            owners[1] = _newOwner;
        }
    }
}
function transferOwnership(address _newOwner) public onlyOwners {
    require(_newOwner != 0x0 && _newOwner != owners[0] && _newOwner != owners[1]);
    if (msg.sender == owners[0]) {
        OwnershipTransferred(owners[0], _newOwner);
        owners[0] = _newOwner;
    } else {
        OwnershipTransferred(owners[1], _newOwner);
        owners[1] = _newOwner;
    }
}

/**
 * Trasfers ownership from the owner who executes the function to another given address.
 * 
 * @param _newOwner The address which will be granted ownership.
 * */