type discovery