The main use case: 1) There is an interface I that may have different implementations * each instance of I has unique identifier * each instance of I can have attached metadata 2) There is Registry R that supports * register/unregister an instance of I * query for instance(s) of I by identifier * query for instance(s) of I by metadata 3) There are ways how to discover instances of I * Spring manifests * OSGi manifest * others