diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
index 7a440fc..65233ab 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
@@ -25,7 +25,7 @@
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.aas.restapi.api.IAASAPI;
 import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory;
 import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
@@ -68,7 +68,7 @@
 	private static final String IDSHORTPATH = Referable.IDSHORT;
 	private static final String IDPATH = Identifiable.IDENTIFICATION + "." + Identifier.ID;
 
-	protected Map<String, VABMultiSubmodelProvider> aasProviderMap = new HashMap<>();
+	protected Map<String, MultiSubmodelProvider> aasProviderMap = new HashMap<>();
 	protected BaSyxMongoDBConfiguration config;
 	protected MongoOperations mongoOps;
 	protected String aasCollection;
@@ -158,7 +158,7 @@
 			String aasId = aas.getIdentification().getId();
 			logger.info("Adding AAS from DB: " + aasId);
 			MongoDBAASAPI aasApi = new MongoDBAASAPI(config, aasId);
-			VABMultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
+			MultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
 			addSubmodelsFromDB(provider, aas);
 			aasProviderMap.put(aas.getIdentification().getId(), provider);
 		}
@@ -167,10 +167,10 @@
 	/**
 	 * Initializes and returns a VABMultiSubmodelProvider with only the AssetAdministrationShell
 	 */
-	private VABMultiSubmodelProvider initMultiSubmodelProvider(IAASAPI aasApi) {
+	private MultiSubmodelProvider initMultiSubmodelProvider(IAASAPI aasApi) {
 		AASModelProvider aasProvider = new AASModelProvider(aasApi);
 		IConnectorProvider connProvider = new HTTPConnectorProvider();
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider(aasProvider, registry, connProvider,
+		MultiSubmodelProvider provider = new MultiSubmodelProvider(aasProvider, registry, connProvider,
 				smApiProvider, aasApiProvider);
 		provider.setAssetAdministrationShell(aasProvider);
 		return provider;
@@ -179,7 +179,7 @@
 	/**
 	 * Adds submodel providers for submodels in the MongoDB
 	 */
-	private void addSubmodelsFromDB(VABMultiSubmodelProvider provider, AssetAdministrationShell aas) {
+	private void addSubmodelsFromDB(MultiSubmodelProvider provider, AssetAdministrationShell aas) {
 		// Get ids and idShorts from aas
 		Collection<IReference> submodelRefs = aas.getSubmodelReferences();
 		List<String> smIds = new ArrayList<>();
@@ -217,7 +217,7 @@
 		return null;
 	}
 
-	private void addSubmodelProvidersById(String smId, VABMultiSubmodelProvider provider) {
+	private void addSubmodelProvidersById(String smId, MultiSubmodelProvider provider) {
 		ISubmodelAPI smApi = new MongoDBSubmodelAPI(smId);
 		SubmodelProvider smProvider = new SubmodelProvider(smApi);
 		provider.addSubmodel(smProvider);
@@ -253,7 +253,7 @@
 	@Override
 	public void createAAS(AssetAdministrationShell aas) {
 		IAASAPI aasApi = this.aasApiProvider.getAASApi(aas);
-		VABMultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
+		MultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
 		aasProviderMap.put(aas.getIdentification().getId(), provider);
 	}
 
@@ -269,13 +269,13 @@
 		aasProviderMap.remove(aasId.getId());
 	}
 
-	public VABMultiSubmodelProvider getProviderForAASId(String aasId) {
+	public MultiSubmodelProvider getProviderForAASId(String aasId) {
 		return aasProviderMap.get(aasId);
 	}
 
 	@Override
 	public IModelProvider getAASProvider(IIdentifier aasId) {
-		VABMultiSubmodelProvider provider = aasProviderMap.get(aasId.getId());
+		MultiSubmodelProvider provider = aasProviderMap.get(aasId.getId());
 
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with Id " + aasId.getId() + " does not exist");
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASBundleServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASBundleServlet.java
index 0563ddd..9428e6d 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASBundleServlet.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASBundleServlet.java
@@ -16,7 +16,7 @@
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
 import org.eclipse.basyx.aas.restapi.MultiAASProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.ISubmodel;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.restapi.SubmodelProvider;
@@ -63,8 +63,8 @@
 	 * @param bundle
 	 * @return
 	 */
-	private VABMultiSubmodelProvider createMultiSubmodelProvider(AASBundle bundle) {
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider();
+	private MultiSubmodelProvider createMultiSubmodelProvider(AASBundle bundle) {
+		MultiSubmodelProvider provider = new MultiSubmodelProvider();
 		IAssetAdministrationShell shell = bundle.getAAS();
 
 		// Check for correct type
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
index f135280..2758fc9 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
@@ -11,7 +11,7 @@
 
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
 
 /**
@@ -20,7 +20,7 @@
  * @author kuhn
  *
  */
-public class AASServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
+public class AASServlet extends VABHTTPInterface<MultiSubmodelProvider> {
 
 	/**
 	 * ID of serialized instances
@@ -31,7 +31,7 @@
 	 * Default constructor - based on a VABMultiSubmodelProvider
 	 */
 	public AASServlet() {
-		super(new VABMultiSubmodelProvider());
+		super(new MultiSubmodelProvider());
 	}
 
 	/**
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
index 9e3451e..a830638 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/processengineconnector/TestAASServicecall.java
@@ -22,7 +22,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.components.processengine.connector.DeviceServiceExecutor;
 import org.eclipse.basyx.regression.support.processengine.aas.DeviceAdministrationShellFactory;
 import org.eclipse.basyx.regression.support.processengine.stubs.CoilcarStub;
@@ -88,7 +88,7 @@
 		Submodel sm = new DeviceSubmodelFactory().create(SUBMODEL_ID, coilcar);
 		
 		// Create VAB multi-submodel provider for holding the sub-models
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider();
+		MultiSubmodelProvider provider = new MultiSubmodelProvider();
 		
 		// Add sub-model to the provider
 		provider.addSubmodel(new SubmodelProvider(sm));
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
index 83c73d3..dfc1709 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
@@ -11,7 +11,7 @@
 
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.regression.support.processengine.aas.DeviceAdministrationShellFactory;
 import org.eclipse.basyx.regression.support.processengine.stubs.Coilcar;
 import org.eclipse.basyx.regression.support.processengine.submodel.DeviceSubmodelFactory;
@@ -25,13 +25,13 @@
  * @author zhangzai
  *
  */
-public class CoilcarAASServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
+public class CoilcarAASServlet extends VABHTTPInterface<MultiSubmodelProvider> {
 	private static final long serialVersionUID = 1L;
 	private String aasid = "coilcar";
 	private String submodelid = "submodel1";
 
 	public CoilcarAASServlet() {
-		super(new VABMultiSubmodelProvider());
+		super(new MultiSubmodelProvider());
 
 		// Create the aas
 		AssetAdministrationShell coilcarAAS = new DeviceAdministrationShellFactory().create(aasid, submodelid);
diff --git a/examples/basyx.aasWrapper/src/main/java/org/eclipse/basyx/wrapper/provider/aas/AASWrapperProvider.java b/examples/basyx.aasWrapper/src/main/java/org/eclipse/basyx/wrapper/provider/aas/AASWrapperProvider.java
index 91d9b10..1b2e7c3 100644
--- a/examples/basyx.aasWrapper/src/main/java/org/eclipse/basyx/wrapper/provider/aas/AASWrapperProvider.java
+++ b/examples/basyx.aasWrapper/src/main/java/org/eclipse/basyx/wrapper/provider/aas/AASWrapperProvider.java
@@ -17,7 +17,7 @@
 import org.eclipse.basyx.aas.metamodel.map.parts.Asset;
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
@@ -42,7 +42,7 @@
 	private final String host;
 	private final int port;
 
-	private VABMultiSubmodelProvider provider;
+	private MultiSubmodelProvider provider;
 
 	private String providerPath = "/aas";
 
@@ -72,7 +72,7 @@
 				configs);
 		aas.addSubmodel(sm);
 
-		provider = new VABMultiSubmodelProvider(new AASModelProvider(aas));
+		provider = new MultiSubmodelProvider(new AASModelProvider(aas));
 		provider.addSubmodel(new SubmodelProvider(sm));
 
 		// Register the aas
diff --git a/examples/basyx.dashboardAAS/src/main/java/org/eclipse/basyx/dashboard/AASExecutable.java b/examples/basyx.dashboardAAS/src/main/java/org/eclipse/basyx/dashboard/AASExecutable.java
index 6c92745..6a1d9b0 100644
--- a/examples/basyx.dashboardAAS/src/main/java/org/eclipse/basyx/dashboard/AASExecutable.java
+++ b/examples/basyx.dashboardAAS/src/main/java/org/eclipse/basyx/dashboard/AASExecutable.java
@@ -18,7 +18,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.restapi.SubmodelProvider;
@@ -80,7 +80,7 @@
 	}
 
 	private static void createServlet(AssetAdministrationShell aas, Submodel... submodels) {
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider();
+		MultiSubmodelProvider provider = new MultiSubmodelProvider();
 		provider.setAssetAdministrationShell(new AASModelProvider(aas));
 		for (Submodel sm : submodels) {
 			provider.addSubmodel(new SubmodelProvider(sm));
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
index d150ea2..7a1ff65 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
@@ -20,7 +20,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
 import org.eclipse.basyx.aas.restapi.VABAASAPIFactory;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.aas.restapi.api.IAASAPI;
 import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
@@ -39,7 +39,7 @@
  */
 public class AASAggregator implements IAASAggregator {
 
-	protected Map<String, VABMultiSubmodelProvider> aasProviderMap = new HashMap<>();
+	protected Map<String, MultiSubmodelProvider> aasProviderMap = new HashMap<>();
 
 	protected IAASRegistryService registry;
 
@@ -131,11 +131,11 @@
 		aasProviderMap.put(aas.getIdentification().getId(), createMultiSubmodelProvider(aas));
 	}
 
-	private VABMultiSubmodelProvider createMultiSubmodelProvider(AssetAdministrationShell aas) {
+	private MultiSubmodelProvider createMultiSubmodelProvider(AssetAdministrationShell aas) {
 		IConnectorProvider connProvider = new HTTPConnectorProvider();
 		IAASAPI aasApi = aasApiProvider.getAASApi(aas);
 		AASModelProvider contentProvider = new AASModelProvider(aasApi);
-		VABMultiSubmodelProvider multiAASProvider = new VABMultiSubmodelProvider(contentProvider, registry,
+		MultiSubmodelProvider multiAASProvider = new MultiSubmodelProvider(contentProvider, registry,
 				connProvider, smApiProvider, aasApiProvider);
 		return multiAASProvider;
 	}
@@ -147,7 +147,7 @@
 
 	@Override
 	public IModelProvider getAASProvider(IIdentifier aasId) {
-		VABMultiSubmodelProvider provider = aasProviderMap.get(aasId.getId());
+		MultiSubmodelProvider provider = aasProviderMap.get(aasId.getId());
 
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with Id " + aasId.getId() + " does not exist");
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiAASProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiAASProvider.java
index 5fbb9f3..06225ff 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiAASProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiAASProvider.java
@@ -25,7 +25,7 @@
  *
  */
 public class MultiAASProvider implements IModelProvider {
-	protected HashMap<String, VABMultiSubmodelProvider> aas_providers;
+	protected HashMap<String, MultiSubmodelProvider> aas_providers;
 
 	public MultiAASProvider() {
 		aas_providers = new HashMap<>();
@@ -40,7 +40,7 @@
 	 * @param modelProvider
 	 *            The provider that contains the Asset Administration Shell.
 	 */
-	public void addMultiSubmodelProvider(String aasIdShort, VABMultiSubmodelProvider modelProvider) {
+	public void addMultiSubmodelProvider(String aasIdShort, MultiSubmodelProvider modelProvider) {
 		aas_providers.put(aasIdShort, modelProvider);
 	}
 
@@ -54,7 +54,7 @@
 	@Override
 	public Object getModelPropertyValue(String path) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
@@ -65,7 +65,7 @@
 	@Override
 	public void setModelPropertyValue(String path, Object newValue) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
@@ -76,7 +76,7 @@
 	@Override
 	public void createValue(String path, Object newEntity) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
@@ -87,7 +87,7 @@
 	@Override
 	public void deleteValue(String path) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
@@ -98,7 +98,7 @@
 	@Override
 	public void deleteValue(String path, Object obj) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
@@ -109,7 +109,7 @@
 	@Override
 	public Object invokeOperation(String path, Object... parameter) throws ProviderException {
 		String aasId = getId(path);
-		VABMultiSubmodelProvider provider = aas_providers.get(aasId);
+		MultiSubmodelProvider provider = aas_providers.get(aasId);
 		if (provider == null) {
 			throw new ResourceNotFoundException("AAS with ID \"" + aasId + "\" does not exist.");
 		}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiSubmodelProvider.java
similarity index 93%
rename from sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java
rename to sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiSubmodelProvider.java
index ca40d93..b38fd68 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/MultiSubmodelProvider.java
@@ -92,7 +92,7 @@
  * @author kuhn, pschorn
  *
  */
-public class VABMultiSubmodelProvider implements IModelProvider {
+public class MultiSubmodelProvider implements IModelProvider {
 
 	/**
 	 * Store aas providers
@@ -132,7 +132,7 @@
 	/**
 	 * Constructor with empty default aas and default VAB APIs
 	 */
-	public VABMultiSubmodelProvider() {
+	public MultiSubmodelProvider() {
 		this.aasApiProvider = new VABAASAPIFactory();
 		this.smApiProvider = new VABSubmodelAPIFactory();
 		IAASAPI aasApi = aasApiProvider.getAASApi(new AssetAdministrationShell());
@@ -142,7 +142,7 @@
 	/**
 	 * Constructor for using custom APIs
 	 */
-	public VABMultiSubmodelProvider(AASModelProvider contentProvider, IAASAPIFactory aasApiProvider,
+	public MultiSubmodelProvider(AASModelProvider contentProvider, IAASAPIFactory aasApiProvider,
 			ISubmodelAPIFactory smApiProvider) {
 		this.aasApiProvider = aasApiProvider;
 		this.smApiProvider = smApiProvider;
@@ -152,7 +152,7 @@
 	/**
 	 * Constructor that accepts an AAS
 	 */
-	public VABMultiSubmodelProvider(AASModelProvider contentProvider) {
+	public MultiSubmodelProvider(AASModelProvider contentProvider) {
 		this.aasApiProvider = new VABAASAPIFactory();
 		this.smApiProvider = new VABSubmodelAPIFactory();
 		// Store content provider
@@ -162,10 +162,10 @@
 	/**
 	 * Constructor that accepts Submodel
 	 */
-	public VABMultiSubmodelProvider(String smID, SubmodelProvider contentProvider) {
+	public MultiSubmodelProvider(SubmodelProvider contentProvider) {
 		this();
 		// Store content provider
-		addSubmodel(smID, contentProvider);
+		addSubmodel(contentProvider);
 	}
 	
 	/**
@@ -173,7 +173,7 @@
 	 * @param registry
 	 * @param provider
 	 */
-	public VABMultiSubmodelProvider(IAASRegistryService registry, IConnectorProvider provider) {
+	public MultiSubmodelProvider(IAASRegistryService registry, IConnectorProvider provider) {
 		this();
 		this.registry = registry;
 		this.connectorProvider = provider;
@@ -182,7 +182,7 @@
 	/**
 	 * Constructor that accepts a registry, a connection provider and API providers
 	 */
-	public VABMultiSubmodelProvider(AASModelProvider contentProvider, IAASRegistryService registry,
+	public MultiSubmodelProvider(AASModelProvider contentProvider, IAASRegistryService registry,
 			IConnectorProvider connectorProvider, ISubmodelAPIFactory smApiProvider, IAASAPIFactory aasApiProvider) {
 		this(contentProvider, aasApiProvider, smApiProvider);
 		this.registry = registry;
@@ -196,7 +196,7 @@
 	 * @param registry
 	 * @param provider
 	 */
-	public VABMultiSubmodelProvider(AASModelProvider contentProvider, IAASRegistryService registry, HTTPConnectorProvider provider) {
+	public MultiSubmodelProvider(AASModelProvider contentProvider, IAASRegistryService registry, HTTPConnectorProvider provider) {
 		this(contentProvider);
 		this.registry = registry;
 		this.connectorProvider = provider;
@@ -217,26 +217,6 @@
 		aasId = AssetAdministrationShell.createAsFacade((Map<String, Object>) modelContentProvider.getModelPropertyValue("")).getIdentification();
 	}
 
-	/**
-	 * Add a Submodel to the provider
-	 * 
-	 * @param elementId
-	 *            Element ID
-	 * @param modelContentProvider
-	 *            Model content provider
-	 */
-	@SuppressWarnings("unchecked")
-	@Deprecated
-	public void addSubmodel(String elementId, SubmodelProvider modelContentProvider) {
-		// Add model provider
-		submodel_providers.put(elementId, modelContentProvider);
-
-		Submodel sm = Submodel.createAsFacade((Map<String, Object>) modelContentProvider.getModelPropertyValue("/"));
-
-		// Adds a new submodel to the registered AAS
-		aas_provider.createValue("/submodels", sm);
-	}
-
 	@SuppressWarnings("unchecked")
 	public void addSubmodel(SubmodelProvider modelContentProvider) {
 		Submodel sm = Submodel.createAsFacade((Map<String, Object>) modelContentProvider.getModelPropertyValue("/"));
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
index 62ff8ab..2d529c0 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
@@ -26,7 +26,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.ISubmodel;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
@@ -102,7 +102,7 @@
 		// Register AAS at directory
 		AASDescriptor desc = new AASDescriptor(aasId, "/aas");
 		registry.register(desc);
-		IModelProvider provider = new VABMultiSubmodelProvider(new AASModelProvider(new AssetAdministrationShell()));
+		IModelProvider provider = new MultiSubmodelProvider(new AASModelProvider(new AssetAdministrationShell()));
 		connectorProvider.addMapping("", provider);
 
 		// Create sub model
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/connected/TestConnectedAssetAdministrationShell.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/connected/TestConnectedAssetAdministrationShell.java
index c85559f..8fa4c7a 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/connected/TestConnectedAssetAdministrationShell.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/connected/TestConnectedAssetAdministrationShell.java
@@ -21,7 +21,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.ISubmodel;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.restapi.SubmodelProvider;
@@ -45,7 +45,7 @@
 
 	@Before
 	public void build() throws Exception {
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider();
+		MultiSubmodelProvider provider = new MultiSubmodelProvider();
 		AssetAdministrationShell shell = retrieveBaselineShell();
 		provider.setAssetAdministrationShell(new AASModelProvider(AssetAdministrationShell.createAsFacade(TypeDestroyer.destroyType(shell))));
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
index 899984f..d29bc3a 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
@@ -7,7 +7,7 @@
 import static org.junit.Assert.fail;
 
 import org.eclipse.basyx.aas.restapi.MultiAASProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
 import org.eclipse.basyx.submodel.restapi.MultiSubmodelElementProvider;
 import org.eclipse.basyx.submodel.restapi.SubmodelProvider;
@@ -33,7 +33,7 @@
 	public void build() {
 		VABConnectionManagerStub stub = new VABConnectionManagerStub();
 		String urn = "urn:fhg:es.iese:aas:1:1:submodel";
-		VABMultiSubmodelProvider aasProvider = new VABMultiSubmodelProvider();
+		MultiSubmodelProvider aasProvider = new MultiSubmodelProvider();
 		aasProvider.addSubmodel(new SubmodelProvider(new SimpleAASSubmodel()));
 		provider = new MultiAASProvider();
 		provider.addMultiSubmodelProvider("a1", aasProvider);
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderRemoteInvocationTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderRemoteInvocationTest.java
index a5e7cc4..cf542a1 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderRemoteInvocationTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderRemoteInvocationTest.java
@@ -27,7 +27,7 @@
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
@@ -63,7 +63,7 @@
 
 	private List<BaSyxService> services = new ArrayList<>();
 
-	private VABMultiSubmodelProvider provider;
+	private MultiSubmodelProvider provider;
 	
 	// Creating a new AAS Registry
 	private IAASRegistryService registry = new InMemoryRegistry();
@@ -86,7 +86,7 @@
 		
 
 		// Create a VABMultiSubmodelProvider using the registry and a http connector
-		provider = new VABMultiSubmodelProvider(registry, new BaSyxConnectorProvider());
+		provider = new MultiSubmodelProvider(registry, new BaSyxConnectorProvider());
 		
 		// Create and add an AAS to the provider with same id as the AAS in the registry
 		AssetAdministrationShell aas = new AssetAdministrationShell();
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
index 6a9e341..47ac5e7 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
@@ -16,7 +16,7 @@
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
 import org.eclipse.basyx.aas.metamodel.map.parts.Asset;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
 import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
@@ -50,7 +50,7 @@
 	public void build() {
 		VABConnectionManagerStub stub = new VABConnectionManagerStub();
 		String urn = "urn:fhg:es.iese:aas:1:1:submodel";
-		VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider();
+		MultiSubmodelProvider provider = new MultiSubmodelProvider();
 
 		// set dummy aas
 		AssetAdministrationShell aas = new AssetAdministrationShell(AASIDSHORT, AASURN, new Asset("assetIdShort", new Identifier(IdentifierType.CUSTOM, "assetId"), AssetKind.INSTANCE));
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/StubAASServlet.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/StubAASServlet.java
index b8c79fa..178f6d4 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/StubAASServlet.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/StubAASServlet.java
@@ -12,13 +12,13 @@
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.restapi.MultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.map.Submodel;
 import org.eclipse.basyx.submodel.restapi.SubmodelProvider;
 import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
 import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
 
-public class StubAASServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
+public class StubAASServlet extends VABHTTPInterface<MultiSubmodelProvider> {
 	private static final long serialVersionUID = 8859337501045845823L;
 
 	// Used short ids
@@ -30,7 +30,7 @@
 	public static final ModelUrn SMURN = new ModelUrn("urn:fhg:es.iese:aas:1:1:mySM#001");
 
 	public StubAASServlet() {
-		super(new VABMultiSubmodelProvider());
+		super(new MultiSubmodelProvider());
 
 		Submodel sm = new Submodel();
 		sm.setIdentification(SMURN.getIdType(), SMURN.getId());
