@classmethod
def all(cls, otp=False, ccid=False, u2f=False):
    """Returns a set of all USB modes, with optional filtering"""
    modes = set([cls.OTP, cls.CCID, cls.OTP_CCID, cls.U2F, cls.OTP_U2F, cls
        .U2F_CCID, cls.OTP_U2F_CCID])
    if otp:
        modes.difference_update(set([cls.CCID, cls.U2F, cls.U2F_CCID]))
    if ccid:
        modes.difference_update(set([cls.OTP, cls.U2F, cls.OTP_U2F]))
    if u2f:
        modes.difference_update(set([cls.OTP, cls.CCID, cls.OTP_CCID]))
    return modes
