Instead of injecting 15 different interfaces (MetadataStorageConnector, MetadataStorageProvider, etc.) separately, an umbrella interface like MetadataStorageType could be created with methods getMetadataStorageConnector(), getMetadataStorageProvider() etc. and injected only once.