Changes due to changes
diff --git a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/MultiStartup.cs b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/MultiStartup.cs
index 3dc4264..f0bdba6 100644
--- a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/MultiStartup.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/MultiStartup.cs
@@ -17,6 +17,7 @@
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Rewrite;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.FileProviders;
@@ -36,6 +37,9 @@
     {
         private static readonly Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
         private const string ControllerAssemblyName = "BaSyx.API.Http.Controllers";
+
+        private const string UI_RELATIVE_PATH = "/multiui";
+
         public IConfiguration Configuration { get; }
         public IServerApplicationLifetime ServerApplicationLifetime { get; }
         public static ServerSettings ServerSettings { get; set; } 
@@ -62,12 +66,7 @@
                 .AddApplicationPart(controllerAssembly)
                 .AddControllersAsServices()
                 .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services));
-
-            services.AddRazorPages(options =>
-            {
-                string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index";
-                options.Conventions.AddPageRoute(pageName, "");
-            });
+            services.AddRazorPages(options => options.Conventions.AddPageRoute("/MultiIndex", "/multiui"));
 
             //Check whether Asset Administration Shell Service Provider exists and bind it to the AssetAdministrationShell-Services-Controller
             services.AddTransient<IAssetAdministrationShellServiceProvider>(ctx =>
@@ -76,7 +75,7 @@
                 .GetRequiredService<IAssetAdministrationShellRepositoryServiceProvider>()
                 .GetAssetAdministrationShellServiceProvider(aasId);
 
-                return new AssetAdministrationShellServices(aasServiceProvider);
+                return aasServiceProvider;//new AssetAdministrationShellServices(aasServiceProvider);
             });
 
 
@@ -88,13 +87,13 @@
                .GetAssetAdministrationShellServiceProvider(aasId);
 
                 var submodelServiceProvider = aasServiceProvider.SubmodelRegistry.GetSubmodelServiceProvider(submodelId);
-                if(!submodelServiceProvider.Success || submodelServiceProvider.Entity == null)
+                if (!submodelServiceProvider.Success || submodelServiceProvider.Entity == null)
                 {
                     SubmodelServiceProvider cssp = new SubmodelServiceProvider();
-                    return new SubmodelServices(cssp);
+                    return cssp;//new SubmodelServices(cssp);
                 }
                 else
-                    return new SubmodelServices(submodelServiceProvider.Entity);
+                    return submodelServiceProvider.Entity;//new SubmodelServices(submodelServiceProvider.Entity);
             });
 
             // Register the Swagger generator, defining one or more Swagger documents
@@ -152,14 +151,6 @@
             app.Use((context, next) =>
             {
                 string[] pathElements = context.Request.Path.ToUriComponent()?.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
-
-
-                if (pathElements == null || pathElements.Length == 0)
-                {
-                    string defaultRoute = ServerSettings.ServerConfig.DefaultRoute ?? "/MultiIndex";
-                    context.Request.Path = new PathString(defaultRoute);
-                    return next();
-                }
                 if (pathElements.Length >= 2)
                 {
                     aasId = pathElements[1];
@@ -207,6 +198,9 @@
                 endpoints.MapControllers();
             });
 
+            var options = new RewriteOptions().AddRedirect("^$", UI_RELATIVE_PATH);
+            app.UseRewriter(options);
+
             if (ServerApplicationLifetime.ApplicationStarted != null)
                 applicationLifetime.ApplicationStarted.Register(ServerApplicationLifetime.ApplicationStarted);
             if (ServerApplicationLifetime.ApplicationStopping != null)
diff --git a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/Pages/Index.cshtml b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/Pages/Index.cshtml
index d758aec..9f2df80 100644
--- a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/Pages/Index.cshtml
+++ b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/Pages/Index.cshtml
@@ -1,4 +1,4 @@
-@page "ui"
+@page
 @model BaSyx.AAS.Server.Http.Pages.IndexModel
 @using BaSyx.API.Components;
 @using BaSyx.Models.Core.AssetAdministrationShell.Generics;
@@ -16,7 +16,7 @@
 
 @{
     IAssetAdministrationShellServiceProvider sp = Model.ServiceProvider;
-    IAssetAdministrationShell aas = sp.AssetAdministrationShell;
+    IAssetAdministrationShell aas = sp.GetBinding();
     ServerSettings settings = Model.Settings;
 
     string eClassLink = "https://www.eclasscontent.com/index.php?action=cc2prdet&language=en&version=10.1&id=&pridatt=";
@@ -507,7 +507,7 @@
         </div>
     </div>
     @{
-        var asset = Model.ServiceProvider.AssetAdministrationShell.Asset;
+        var asset = aas.Asset;
         if (asset != null)
         {
             <div class="container">
diff --git a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/ServerSettings.xml b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/ServerSettings.xml
index f6672c2..829e7cb 100644
--- a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/ServerSettings.xml
+++ b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/ServerSettings.xml
@@ -8,6 +8,6 @@
         <Url>http://+:5080</Url>
       </Urls>
     </Hosting>
-    <DefaultRoute>/Index</DefaultRoute>
+    <DefaultRoute/>
   </ServerConfig>
 </ServerSettings>
diff --git a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/SingleStartup.cs b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/SingleStartup.cs
index b24a31b..b40bd16 100644
--- a/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/SingleStartup.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.AAS.Server.Http/SingleStartup.cs
@@ -9,7 +9,6 @@
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
 using BaSyx.API.Components;
-using BaSyx.API.Http.Controllers;
 using BaSyx.Components.Common;
 using BaSyx.Utils.DependencyInjection;
 using BaSyx.Utils.Settings;
@@ -17,6 +16,7 @@
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Rewrite;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.FileProviders;
@@ -25,11 +25,9 @@
 using Microsoft.OpenApi.Models;
 using NLog;
 using NLog.Web;
-using Swashbuckle.AspNetCore.SwaggerGen;
 using System;
 using System.Diagnostics;
 using System.IO;
-using System.Linq;
 using System.Reflection;
 
 namespace BaSyx.AAS.Server.Http
@@ -39,6 +37,8 @@
         private static readonly Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
         private const string ControllerAssemblyName = "BaSyx.API.Http.Controllers";
 
+        private const string UI_RELATIVE_PATH = "/ui";
+
         public IConfiguration Configuration { get; }
         public IServerApplicationLifetime ServerApplicationLifetime { get; }
         public static ServerSettings ServerSettings { get; set; } 
@@ -64,11 +64,7 @@
                 .AddApplicationPart(controllerAssembly)
                 .AddControllersAsServices()
                 .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services));
-            services.AddRazorPages(options =>
-            {
-                string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index";
-                options.Conventions.AddPageRoute(pageName, "");
-            });
+            services.AddRazorPages(options => options.Conventions.AddPageRoute("/Index", "/ui"));
 
             services.AddDirectoryBrowser();
            
@@ -77,13 +73,13 @@
             {
                 var aasServiceProvider = ctx.GetRequiredService<IAssetAdministrationShellServiceProvider>();
                 var submodelServiceProvider = aasServiceProvider.SubmodelRegistry.GetSubmodelServiceProvider(submodelId);
-                if(!submodelServiceProvider.Success || submodelServiceProvider.Entity == null)
+                if (!submodelServiceProvider.Success || submodelServiceProvider.Entity == null)
                 {
                     SubmodelServiceProvider cssp = new SubmodelServiceProvider();
-                    return new SubmodelServices(cssp);
+                    return cssp; //new SubmodelServices(cssp);
                 }
                 else
-                    return new SubmodelServices(submodelServiceProvider.Entity);
+                    return submodelServiceProvider.Entity; //new SubmodelServices(submodelServiceProvider.Entity);
             });
 
             // Register the Swagger generator, defining one or more Swagger documents
@@ -102,9 +98,7 @@
                 var xmlFile = $"{controllerAssembly.GetName().Name}.xml";
                 var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                 if (ResourceChecker.CheckResourceAvailability(controllerAssembly, ControllerAssemblyName, xmlFile, true))
-                    c.IncludeXmlComments(xmlPath);
-                
-                c.DocumentFilter<ControllerFilter>();
+                    c.IncludeXmlComments(xmlPath);           
             });
             services.AddSwaggerGenNewtonsoftSupport();
         }
@@ -143,12 +137,6 @@
             app.Use((context, next) =>
             {
                 string[] pathElements = context.Request.Path.ToUriComponent()?.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
-                if (pathElements == null || pathElements.Length == 0)
-                {
-                    string defaultRoute = ServerSettings.ServerConfig.DefaultRoute ?? "/ui";
-                    context.Request.Path = new PathString(defaultRoute);
-                    return next();
-                }
                 if (pathElements.Length >= 4)
                 {
                     submodelId = pathElements[2];
@@ -176,6 +164,9 @@
                 endpoints.MapControllers();
             });
 
+            var options = new RewriteOptions().AddRedirect("^$", UI_RELATIVE_PATH);
+            app.UseRewriter(options);
+
             if (ServerApplicationLifetime.ApplicationStarted != null)
                 applicationLifetime.ApplicationStarted.Register(ServerApplicationLifetime.ApplicationStarted);
             if (ServerApplicationLifetime.ApplicationStopping != null)
@@ -194,13 +185,4 @@
             });            
         }
     }
-
-    internal class ControllerFilter : IDocumentFilter
-    {
-        private static readonly Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
-        public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
-        {
-            logger.Info("Hier");
-        }
-    }
 }
diff --git a/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs b/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
index 9069cb1..055b975 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Components.Common/ServerApplication.cs
@@ -98,13 +98,19 @@
                 using (Stream stream = content)
                 {
                     string fileName = Path.GetFileName(relativeUri.ToString());
-                    string directory = Path.GetDirectoryName(relativeUri.ToString());
-                    if (directory.StartsWith("\\"))
-                        directory = directory.Substring(1, directory.Length - 1);
-                    string hostingDirectory = Path.Combine(AppContext.BaseDirectory, Settings.ServerConfig.Hosting.ContentPath, directory);
+                    logger.Info("FileName: " + fileName);
+                    string directory = Path.GetDirectoryName(relativeUri.ToString()).TrimStart('\\');
+                    logger.Info("Directory: " + directory);
+
+                    logger.Info("Content Path from Settings: " + Settings.ServerConfig.Hosting.ContentPath);
+                    logger.Info("Current Working Directory: " + Directory.GetCurrentDirectory());
+                    string hostingDirectory = Path.Join(Directory.GetCurrentDirectory(), Settings.ServerConfig.Hosting.ContentPath, directory);
+
+                    logger.Info($"Try creating hosting directory if not existing: {hostingDirectory}");
                     Directory.CreateDirectory(hostingDirectory);
 
-                    string filePath = Path.Combine(hostingDirectory, fileName);
+                    string filePath = Path.Join(hostingDirectory, fileName);
+                    logger.Info($"Try writing file: {filePath}");
 
                     using (FileStream fileStream = File.OpenWrite(filePath))
                     {
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Client.Http/RegistryHttpClient.cs b/sdks/dotnet/basyx-components/BaSyx.Registry.Client.Http/RegistryHttpClient.cs
index 9f9e53a..0db377c 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Client.Http/RegistryHttpClient.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Client.Http/RegistryHttpClient.cs
@@ -135,7 +135,7 @@
             else
             {
                 var foundItems = result.Entity.Where(w => predicate.Invoke(w));
-                return new Result<IQueryableElementContainer<IAssetAdministrationShellDescriptor>>(result.Success, foundItems.AsQueryableElementContainer(), result.Messages);
+                return new Result<IQueryableElementContainer<IAssetAdministrationShellDescriptor>>(result.Success, foundItems?.AsQueryableElementContainer(), result.Messages);
             }
         }
 
@@ -144,7 +144,7 @@
             var request = base.CreateRequest(GetUri(), HttpMethod.Get);
             var response = base.SendRequest(request, Timeout);
             var result = base.EvaluateResponse<IEnumerable<IAssetAdministrationShellDescriptor>>(response, response.Entity);
-            return new Result<IQueryableElementContainer<IAssetAdministrationShellDescriptor>>(result.Success, result.Entity.AsQueryableElementContainer(), result.Messages);
+            return new Result<IQueryableElementContainer<IAssetAdministrationShellDescriptor>>(result.Success, result.Entity?.AsQueryableElementContainer(), result.Messages);
         }
 
         public IResult DeleteAssetAdministrationShellRegistration(string aasId)
@@ -190,7 +190,7 @@
             else
             {
                 var foundItems = result.Entity.Where(w => predicate.Invoke(w));
-                return new Result<IQueryableElementContainer<ISubmodelDescriptor>>(result.Success, foundItems.AsQueryableElementContainer(), result.Messages);
+                return new Result<IQueryableElementContainer<ISubmodelDescriptor>>(result.Success, foundItems?.AsQueryableElementContainer(), result.Messages);
             }
         }
 
@@ -203,7 +203,7 @@
             var response = base.SendRequest(request, Timeout);
             var result = base.EvaluateResponse<IEnumerable<ISubmodelDescriptor>>(response, response.Entity);
 
-            return new Result<IQueryableElementContainer<ISubmodelDescriptor>>(result.Success, result.Entity.AsQueryableElementContainer(), result.Messages);
+            return new Result<IQueryableElementContainer<ISubmodelDescriptor>>(result.Success, result.Entity?.AsQueryableElementContainer(), result.Messages);
         }
 
         public IResult<ISubmodelDescriptor> RetrieveSubmodelRegistration(string aasId, string submodelId)
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/ServerSettings.xml b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/ServerSettings.xml
index 61c3f16..4cae3f7 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/ServerSettings.xml
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http.Component/ServerSettings.xml
@@ -6,7 +6,7 @@
         <Url>http://+:4999</Url>
       </Urls>
     </Hosting>
-    <DefaultRoute>/ui</DefaultRoute>
+    <DefaultRoute/>
   </ServerConfig>
   <Miscellaneous/>
 </ServerSettings>
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/ServerSettings.xml b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/ServerSettings.xml
index b04181d..2327275 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/ServerSettings.xml
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/ServerSettings.xml
@@ -8,6 +8,6 @@
         <Url>http://+:4999</Url>
       </Urls>
     </Hosting>
-    <DefaultRoute>/Index</DefaultRoute>
+    <DefaultRoute/>
   </ServerConfig>
 </ServerSettings>
diff --git a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/Startup.cs b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/Startup.cs
index 65e40b8..a193618 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/Startup.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Registry.Server.Http/Startup.cs
@@ -25,6 +25,7 @@
 using Microsoft.AspNetCore.Hosting;
 using BaSyx.Components.Common;
 using BaSyx.Utils.DependencyInjection;
+using Microsoft.AspNetCore.Rewrite;
 
 namespace BaSyx.Registry.Server.Http
 {
@@ -33,6 +34,8 @@
         private static Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
         private const string ControllerAssemblyName = "BaSyx.API.Http.Controllers";
 
+        private const string UI_RELATIVE_PATH = "/ui";
+
         public IConfiguration Configuration { get; }
         public IServerApplicationLifetime ServerApplicationLifetime { get; }
         public static ServerSettings ServerSettings { get; set; }
@@ -55,13 +58,8 @@
                 .AddApplicationPart(controllerAssembly)
                 .AddControllersAsServices()
                 .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services));
-            services.AddRazorPages(options =>
-            {
-                string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index";
-                options.Conventions.AddPageRoute(pageName, "");
-            });
+            services.AddRazorPages();
 
-           
             services.AddSwaggerGen(c =>
             {
                 c.SwaggerDoc("v1", new OpenApiInfo()
@@ -111,6 +109,9 @@
                 endpoints.MapControllers();
             });
 
+            var options = new RewriteOptions().AddRedirect("^$", UI_RELATIVE_PATH);
+            app.UseRewriter(options);
+
             if (ServerApplicationLifetime.ApplicationStarted != null)
                 applicationLifetime.ApplicationStarted.Register(ServerApplicationLifetime.ApplicationStarted);
             if (ServerApplicationLifetime.ApplicationStopping != null)
diff --git a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/MultiStartup.cs b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/MultiStartup.cs
index ca39798..70b30b6 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/MultiStartup.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/MultiStartup.cs
@@ -17,6 +17,7 @@
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Rewrite;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.FileProviders;
@@ -37,6 +38,8 @@
         private static Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
         private const string ControllerAssemblyName = "BaSyx.API.Http.Controllers";
 
+        private const string UI_RELATIVE_PATH = "/multiui";
+
         public IConfiguration Configuration { get; }
         public static ServerSettings ServerSettings { get; set; }
         public IServerApplicationLifetime ServerApplicationLifetime { get; }
@@ -61,12 +64,7 @@
                 .AddApplicationPart(controllerAssembly)
                 .AddControllersAsServices()
                 .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services));
-
-            services.AddRazorPages(options =>
-            {
-                string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index";
-                options.Conventions.AddPageRoute(pageName, "");
-            });
+            services.AddRazorPages();
 
             //Check whether Submodel Service Provider exists and bind it to the Submodel-Services-Controller
             services.AddTransient(ctx =>
@@ -133,14 +131,6 @@
             app.Use((context, next) =>
             {
                 string[] pathElements = context.Request.Path.ToUriComponent()?.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
-
-
-                if (pathElements == null || pathElements.Length == 0)
-                {
-                    string defaultRoute = ServerSettings.ServerConfig.DefaultRoute ?? "/MultiIndex";
-                    context.Request.Path = new PathString(defaultRoute);
-                    return next();
-                }
                 if (pathElements.Length >= 2)
                 {
                     submodelId = pathElements[1];
@@ -175,6 +165,9 @@
                 endpoints.MapControllers();
             });
 
+            var options = new RewriteOptions().AddRedirect("^$", UI_RELATIVE_PATH);
+            app.UseRewriter(options);
+
             if (ServerApplicationLifetime.ApplicationStarted != null)
                 applicationLifetime.ApplicationStarted.Register(ServerApplicationLifetime.ApplicationStarted);
             if (ServerApplicationLifetime.ApplicationStopping != null)
diff --git a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/Index.cshtml b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/Index.cshtml
index 05d047a..bdaa01e 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/Index.cshtml
+++ b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/Index.cshtml
@@ -12,7 +12,7 @@
     ViewData["Title"] = "Index";
 }
 @{
-    ISubmodel submodel = Model.ServiceProvider.Submodel;
+    ISubmodel submodel = Model.ServiceProvider.GetBinding();
     string eClassLink = "https://www.eclasscontent.com/index.php?action=cc2prdet&language=en&version=10.1&id=&pridatt=";
 
     Func<Identifier, IHtmlContent> ShowIdentification = @<text>@{
diff --git a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/MultiIndex.cshtml b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/MultiIndex.cshtml
index b2ad3bc..a4b8394 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/MultiIndex.cshtml
+++ b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/Pages/MultiIndex.cshtml
@@ -1,4 +1,4 @@
-@page
+@page "multiui"
 @model BaSyx.Submodel.Server.Http.Pages.MultiIndexModel
 @using BaSyx.API.Components;
 @using BaSyx.Models.Core.AssetAdministrationShell.Generics;
diff --git a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/ServerSettings.xml b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/ServerSettings.xml
index e082631..f995f9d 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/ServerSettings.xml
+++ b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/ServerSettings.xml
@@ -8,6 +8,6 @@
         <Url>http://+:5088</Url>
       </Urls>
     </Hosting>
-    <DefaultRoute>/Index</DefaultRoute>
+    <DefaultRoute/>
   </ServerConfig>
 </ServerSettings>
diff --git a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/SingleStartup.cs b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/SingleStartup.cs
index 64cbe5d..b3f1784 100644
--- a/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/SingleStartup.cs
+++ b/sdks/dotnet/basyx-components/BaSyx.Submodel.Server.Http/SingleStartup.cs
@@ -15,6 +15,7 @@
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Rewrite;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.FileProviders;
@@ -35,6 +36,8 @@
         private static Logger logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
         private const string ControllerAssemblyName = "BaSyx.API.Http.Controllers";
 
+        private const string UI_RELATIVE_PATH = "/ui";
+
         public IConfiguration Configuration { get; }
         public static ServerSettings ServerSettings { get; set; }
         public IServerApplicationLifetime ServerApplicationLifetime { get; }
@@ -58,11 +61,7 @@
                 .AddApplicationPart(controllerAssembly)
                 .AddControllersAsServices()
                 .AddNewtonsoftJson(options => options.GetDefaultMvcJsonOptions(services));
-            services.AddRazorPages(options =>
-            {
-                string pageName = ServerSettings.ServerConfig?.DefaultRoute ?? "/Index";
-                options.Conventions.AddPageRoute(pageName, "");
-            });
+            services.AddRazorPages();
 
             services.AddDirectoryBrowser();
 
@@ -133,6 +132,9 @@
                 endpoints.MapControllers();
             });
 
+            var options = new RewriteOptions().AddRedirect("^$", UI_RELATIVE_PATH);
+            app.UseRewriter(options);
+
             if (ServerApplicationLifetime.ApplicationStarted != null)
                 applicationLifetime.ApplicationStarted.Register(ServerApplicationLifetime.ApplicationStarted);
             if (ServerApplicationLifetime.ApplicationStopping != null)
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/BaSyx.API.Http.Controllers.AASX.xml b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/BaSyx.API.Http.Controllers.AASX.xml
index 75e9017..c60677e 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/BaSyx.API.Http.Controllers.AASX.xml
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/BaSyx.API.Http.Controllers.AASX.xml
@@ -9,6 +9,13 @@
             The AASX Package Service
             </summary>
         </member>
+        <member name="M:BaSyx.API.Http.Controllers.PackageService.PackageService.#ctor(BaSyx.API.Components.IAssetAdministrationShellServiceProvider,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
+            <summary>
+            Constructor for the AASX-Package Services Controller
+            </summary>
+            <param name="aasServiceProvider">The Asset Administration Shell Service Provider implementation provided by the dependency injection</param>
+            <param name="environment">The Hosting Environment provided by the dependency injection</param>
+        </member>
         <member name="M:BaSyx.API.Http.Controllers.PackageService.PackageService.GetAASXPackage">
             <summary>
             Retrieves the full AASX Package
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/PackageService.cs b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/PackageService.cs
index 5507f8d..5f99174 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/PackageService.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers.AASX/PackageService.cs
@@ -26,6 +26,12 @@
 
 #if NETCOREAPP3_1
         private readonly IWebHostEnvironment hostingEnvironment;
+
+        /// <summary>
+        /// Constructor for the AASX-Package Services Controller
+        /// </summary>
+        /// <param name="aasServiceProvider">The Asset Administration Shell Service Provider implementation provided by the dependency injection</param>
+        /// <param name="environment">The Hosting Environment provided by the dependency injection</param>
         public PackageService(IAssetAdministrationShellServiceProvider aasServiceProvider, IWebHostEnvironment environment)
         {
             shellServiceProvider = aasServiceProvider;
@@ -33,6 +39,12 @@
         }
 #else
         private readonly IHostingEnvironment hostingEnvironment;
+
+        /// <summary>
+        /// Constructor for the AASX-Package Services Controller
+        /// </summary>
+        /// <param name="aasServiceProvider">The Asset Administration Shell Service Provider implementation provided by the dependency injection</param>
+        /// <param name="environment">The Hosting Environment provided by the dependency injection</param>
         public PackageService(IAssetAdministrationShellServiceProvider aasServiceProvider, IHostingEnvironment environment)
         {
             shellServiceProvider = aasServiceProvider;
@@ -52,12 +64,13 @@
         [ProducesResponseType(typeof(Result), 400)]
         public IActionResult GetAASXPackage()
         {
-            string filename = shellServiceProvider.AssetAdministrationShell.IdShort + ".aasx";
+            var aas = shellServiceProvider.GetBinding();
+            string filename = aas.IdShort + ".aasx";
             using (AASX aasx = new AASX(filename))
             {
-                AssetAdministrationShellEnvironment_V2_0 env = new AssetAdministrationShellEnvironment_V2_0(shellServiceProvider.AssetAdministrationShell);
-                aasx.AddEnvironment(shellServiceProvider.AssetAdministrationShell.Identification, env, ExportType.Xml);
-      
+                AssetAdministrationShellEnvironment_V2_0 env = new AssetAdministrationShellEnvironment_V2_0(aas);
+                aasx.AddEnvironment(aas.Identification, env, ExportType.Xml);
+
                 if (aasx != null)
                 {
                     IFileProvider fileProvider = hostingEnvironment.ContentRootFileProvider;
@@ -65,15 +78,15 @@
                     {
                         if (item.IsDirectory)
                         {
-                            foreach(var subItem in fileProvider.GetDirectoryContents("Content/aasx/" + item.Name))
+                            foreach (var subItem in fileProvider.GetDirectoryContents("Content/aasx/" + item.Name))
                             {
-                                if(subItem.Exists)
+                                if (subItem.Exists)
                                     aasx.AddFileToAASX("/aasx/" + item.Name + "/" + subItem.Name, subItem.PhysicalPath);
                             }
                         }
                         else
                         {
-                            if(item.Exists)
+                            if (item.Exists)
                                 aasx.AddFileToAASX("/aasx/" + item.Name, item.PhysicalPath);
                         }
                     }
@@ -89,13 +102,11 @@
             return new BadRequestResult();
         }
 
-#endregion
+        #endregion
+
+        #region Helper Methods
 
 
-
-#region Helper Methods
-
-
-#endregion
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/AssetAdministrationShellServices.cs b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/AssetAdministrationShellServices.cs
index aee8574..83245c7 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/AssetAdministrationShellServices.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/AssetAdministrationShellServices.cs
@@ -76,20 +76,16 @@
             if (submodel == null)
                 return ResultHandling.NullResult(nameof(submodel));
 
-            var result = serviceProvider.CreateSubmodel(submodel);
-            if(result.Success && result.Entity != null)
-            {
-                var spEndpoints = serviceProvider
-                    .ServiceDescriptor
-                    .Endpoints
-                    .ToList()
-                    .ConvertAll(c => new HttpEndpoint(DefaultEndpointRegistration.GetSubmodelEndpoint(c, submodel.IdShort)));
+            var spEndpoints = serviceProvider
+                .ServiceDescriptor
+                .Endpoints
+                .ToList()
+                .ConvertAll(c => new HttpEndpoint(DefaultEndpointRegistration.GetSubmodelEndpoint(c, submodel.IdShort)));
 
-                ISubmodelDescriptor descriptor = new SubmodelDescriptor(submodel, spEndpoints);
+            ISubmodelDescriptor descriptor = new SubmodelDescriptor(submodel, spEndpoints);
+            SubmodelServiceProvider cssp = new SubmodelServiceProvider(submodel, descriptor);
+            var result = serviceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(submodel.IdShort, cssp);
 
-                SubmodelServiceProvider cssp = new SubmodelServiceProvider(submodel, descriptor);
-                serviceProvider.SubmodelRegistry.RegisterSubmodelServiceProvider(submodel.IdShort, cssp);
-            }
             return result.CreateActionResult(CrudOperation.Create, "aas/submodels/" + submodel.IdShort);
         }
         /// <summary>
@@ -128,7 +124,7 @@
             if (string.IsNullOrEmpty(submodelIdShort))
                 return ResultHandling.NullResult(nameof(submodelIdShort));
 
-            var result = serviceProvider.DeleteSubmodel(submodelIdShort);
+            var result = serviceProvider.SubmodelRegistry.UnregisterSubmodelServiceProvider(submodelIdShort);
             return result.CreateActionResult(CrudOperation.Delete);
         }
         /// <summary>
@@ -138,7 +134,7 @@
         /// <response code="200">Returns a list of found Submodels</response>
         /// <response code="404">No Submodel Service Providers found</response>       
         [HttpGet("aas/submodels", Name = "GetSubmodelsFromShell")]
-        [ProducesResponseType(typeof(BaSyx.Models.Core.AssetAdministrationShell.Implementations.Submodel[]), 200)]
+        [ProducesResponseType(typeof(Submodel[]), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetSubmodelsFromShell()
         {
@@ -244,8 +240,8 @@
         /// </summary>
         /// <param name="submodelElementIdShort">The Submodel-Element's short id</param>
         /// <returns></returns>
-        /// <response code="200">Returns the requested Property</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="200">Returns the requested Submodel-Element</response>
+        /// <response code="404">Submodel / Submodel-Element not found</response>     
         [HttpGet("aas/submodels/{submodelIdShort}/submodel/submodelElements/{submodelElementIdShort}", Name = "RoutedGetSubmodelElementByIdShort")]
         [ProducesResponseType(typeof(SubmodelElement), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -278,32 +274,12 @@
         #endregion
         #region Property - REST-Calls
         /// <summary>
-        /// Creates or updated a Property to the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="property">The Property's description object</param>
-        /// <returns></returns>
-        /// <response code="201">Property created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("aas/submodels/{submodelIdShort}/submodel/properties", Name = "RoutedPutProperty")]
-        [ProducesResponseType(typeof(Property), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult RoutedPutProperty([FromBody] IProperty property)
-        {
-            if (property == null)
-                return ResultHandling.NullResult(nameof(property));
-
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.PutProperty(property);
-        }
-        /// <summary>
-        /// Retrieves a specific Property from the Asset Administrations's Submodel
+        /// Retrieves a specific Property from the Asset Administration Shell's Submodel
         /// </summary>
         /// <param name="propertyIdShort">The Property's short id</param>
         /// <returns></returns>
         /// <response code="200">Returns the requested Property</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="404">Submodel / Property not found</response>     
         [HttpGet("aas/submodels/{submodelIdShort}/submodel/properties/{propertyIdShort}", Name = "RoutedGetPropertyByIdShort")]
         [ProducesResponseType(typeof(Property), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -322,7 +298,7 @@
         /// <param name="propertyIdShort">The Property's short id</param>
         /// <returns></returns>
         /// <response code="200">Returns the requested Property's value</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="404">Submodel / Property not found</response>     
         [HttpGet("aas/submodels/{submodelIdShort}/submodel/properties/{propertyIdShort}/value", Name = "RoutedGetPropertyValueByIdShort")]
         [ProducesResponseType(typeof(ElementValue), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -336,7 +312,7 @@
         }
 
         /// <summary>
-        /// Updates the Asset Administration Shell's Submodel's Property
+        /// Updates the Asset Administration Shell's Submodel's Property's value
         /// </summary>
         /// <param name="propertyIdShort">The Property's short id</param>
         /// <param name="value">The new value</param>
@@ -356,52 +332,16 @@
             var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
             return controller.PutPropertyValueByIdShort(propertyIdShort, value);
         }
-        /// <summary>
-        /// Deletes a specific Property from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="propertyIdShort">The Property's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Property deleted successfully</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("aas/submodels/{submodelIdShort}/submodel/properties/{propertyIdShort}", Name = "RoutedDeletePropertyByIdShort")]
-        [ProducesResponseType(typeof(Result), 200)]
-        public IActionResult RoutedDeletePropertyByIdShort(string propertyIdShort)
-        {
-            if (string.IsNullOrEmpty(propertyIdShort))
-                return ResultHandling.NullResult(nameof(propertyIdShort));
 
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.DeletePropertyByIdShort(propertyIdShort);
-        }
         #endregion
         #region Operation - REST-Calls
         /// <summary>
-        /// Adds a new operation to the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="operation">The serialized Operation object</param>
-        /// <returns></returns>
-        /// <response code="201">Operation created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("aas/submodels/{submodelIdShort}/submodel/operations", Name = "RoutedPutOperation")]
-        [ProducesResponseType(typeof(Operation), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult RoutedPutOperation([FromBody] IOperation operation)
-        {
-            if (operation == null)
-                return ResultHandling.NullResult(nameof(operation));
-
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.PutOperation(operation);
-        }
-        /// <summary>
         /// Retrieves a specific Operation from the Asset Administration Shell's Submodel
         /// </summary>
         /// <param name="operationIdShort">The Operation's short id</param>
         /// <returns></returns>
         /// <response code="200">Success</response>
-        /// <response code="404">Submodel/Operation not found</response>     
+        /// <response code="404">Submodel / Operation not found</response>     
         [HttpGet("aas/submodels/{submodelIdShort}/submodel/operations/{operationIdShort}", Name = "RoutedGetOperationByIdShort")]
         [ProducesResponseType(typeof(Operation), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -414,23 +354,6 @@
             return controller.GetOperationByIdShort(operationIdShort);
         }
         /// <summary>
-        /// Deletes a specific Operation from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="operationIdShort">The Operation's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Operation deleted successfully</response>  
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("aas/submodels/{submodelIdShort}/submodel/operations/{operationIdShort}", Name = "RoutedDeleteOperationByIdShort")]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult RoutedDeleteOperationByIdShort(string operationIdShort)
-        {
-            if (string.IsNullOrEmpty(operationIdShort))
-                return ResultHandling.NullResult(nameof(operationIdShort));
-
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.DeleteOperationByIdShort(operationIdShort);
-        }
-        /// <summary>
         /// Synchronously invokes a specific operation from the Submodel
         /// </summary>
         /// <param name="operationIdShort">The Operation's short id</param>
@@ -457,33 +380,13 @@
         #endregion
         #region Event - REST-Calls
         /// <summary>
-        /// Adds a new event to the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="eventable">The Event description object</param>
-        /// <returns></returns>
-        /// <response code="201">Event created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("aas/submodels/{submodelIdShort}/submodel/events", Name = "RoutedPutEvent")]
-        [ProducesResponseType(typeof(Event), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult RoutedPutEvent([FromBody] IEvent eventable)
-        {
-            if (eventable == null)
-                return ResultHandling.NullResult(nameof(eventable));
-
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.PutEvent(eventable);
-        }
-        /// <summary>
         /// Retrieves a specific event from the Asset Administration Shell's Submodel
         /// </summary>
         /// <param name="eventIdShort">The Event's short id</param>
         /// <returns></returns>
         /// <response code="200">Success</response>
         /// <response code="404">Submodel/Event not found</response>     
-        [HttpGet("aas/submodels/{submodelIdShort}/submodel/events/{eventIdShort}", Name = "RoutedGetEvent")]
+        [HttpGet("aas/submodels/{submodelIdShort}/submodel/events/{eventIdShort}", Name = "RoutedGetEventByIdShort")]
         [ProducesResponseType(typeof(Event), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult RoutedGetEventByIdShort(string eventIdShort)
@@ -494,24 +397,6 @@
             var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
             return controller.GetEventByIdShort(eventIdShort);
         }
-        /// <summary>
-        /// Deletes a specific event from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="eventIdShort">The Event's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Event deleted successfully</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("aas/submodels/{submodelIdShort}/submodel/events/{eventIdShort}", Name = "RoutedDeleteEventByIdShort")]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult RoutedDeleteEventByIdShort(string eventIdShort)
-        {
-            if (string.IsNullOrEmpty(eventIdShort))
-                return ResultHandling.NullResult(nameof(eventIdShort));
-
-            var controller = HttpContext.RequestServices.GetService<SubmodelServices>();
-            return controller.DeleteEventByIdShort(eventIdShort);
-        }
-
         #endregion
         #endregion
 
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/SubmodelServices.cs b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/SubmodelServices.cs
index b61d25c..7a98690 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/SubmodelServices.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/AssetAdministrationShell/SubmodelServices.cs
@@ -12,15 +12,11 @@
 using BaSyx.Models.Core.AssetAdministrationShell.Generics;
 using BaSyx.Utils.ResultHandling;
 using BaSyx.API.Components;
-using BaSyx.Utils.Client;
 using System;
-using BaSyx.API.AssetAdministrationShell;
 using Newtonsoft.Json.Linq;
 using BaSyx.Models.Extensions;
 using BaSyx.Models.Core.AssetAdministrationShell.Implementations;
-using BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes;
 using BaSyx.Models.Core.AssetAdministrationShell.Implementations.SubmodelElementTypes;
-using BaSyx.Models.Connectivity.Descriptors;
 using BaSyx.Models.Core.Common;
 using BaSyx.Models.Communication;
 
@@ -29,29 +25,19 @@
     /// <summary>
     /// All Asset Administration Shell Services provided by the component
     /// </summary>
-    public class SubmodelServices : Controller, ISubmodelServiceProvider
+    public class SubmodelServices : Controller
     {
-        private readonly ISubmodelServiceProvider submodelServiceProvider;
+        private readonly ISubmodelServiceProvider serviceProvider;
 
-        public ISubmodel Submodel => submodelServiceProvider?.GetBinding();
-        public ISubmodelDescriptor ServiceDescriptor { get; }
-
+        /// <summary>
+        /// Constructor for the Submodel Services Controller
+        /// </summary>
+        /// <param name="submodelServiceProvider">The Submodel Service Provider implementation provided by the dependency injection</param>
         public SubmodelServices(ISubmodelServiceProvider submodelServiceProvider)
         {
-            this.submodelServiceProvider = submodelServiceProvider;
-            ServiceDescriptor = submodelServiceProvider?.ServiceDescriptor;
+            serviceProvider = submodelServiceProvider;
         }
 
-        public void BindTo(ISubmodel element)
-        {
-            submodelServiceProvider.BindTo(element);
-        }
-        public ISubmodel GetBinding()
-        {
-            return submodelServiceProvider.GetBinding();
-        }
-
-
         #region REST-Interface Submodel
 
 
@@ -69,7 +55,7 @@
             if (string.IsNullOrEmpty(columns))
                 return ResultHandling.NullResult(nameof(columns));
 
-            var result = RetrieveSubmodel();
+            var result = serviceProvider.RetrieveSubmodel();
             if (result != null && result.Entity != null)
             {
                 string[] columnNames = columns.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
@@ -91,7 +77,7 @@
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetMinimizedSubmodel()
         {
-            var result = RetrieveSubmodel();
+            var result = serviceProvider.RetrieveSubmodel();
 
             if (result != null && result.Entity != null)
             {
@@ -109,11 +95,11 @@
         /// <response code="200">Success</response>
         /// <response code="404">Submodel not found</response>       
         [HttpGet("submodel", Name = "GetSubmodel")]
-        [ProducesResponseType(typeof(BaSyx.Models.Core.AssetAdministrationShell.Implementations.Submodel), 200)]
+        [ProducesResponseType(typeof(Submodel), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetSubmodel()
         {
-            var result = RetrieveSubmodel();
+            var result = serviceProvider.RetrieveSubmodel();
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -122,13 +108,13 @@
         /// </summary>
         /// <returns></returns>
         /// <response code="200">Returns a list of found SubmodelElements</response>
-        /// <response code="404">Submodel not found / No SubmodelElements found</response>       
+        /// <response code="404">Submodel not found</response>       
         [HttpGet("submodel/submodelElements", Name = "GetSubmodelElements")]
         [ProducesResponseType(typeof(SubmodelElement[]), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetSubmodelElements()
         {
-            var result = RetrieveSubmodelElements();
+            var result = serviceProvider.RetrieveSubmodelElements();
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -137,13 +123,13 @@
         /// </summary>
         /// <returns></returns>
         /// <response code="200">Returns a list of found Properties</response>
-        /// <response code="404">Submodel not found / No Properties found</response>       
+        /// <response code="404">Submodel not found</response>       
         [HttpGet("submodel/properties", Name = "GetProperties")]
         [ProducesResponseType(typeof(Property[]), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetProperties()
         {
-            var result = RetrieveProperties();
+            var result = serviceProvider.RetrieveProperties();
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -152,13 +138,13 @@
         /// </summary>
         /// <returns></returns>
         /// <response code="200">Success</response>
-        /// <response code="404">Submodel not found / No Operations found</response>      
+        /// <response code="404">Submodel not found</response>      
         [HttpGet("submodel/operations", Name = "GetOperations")]
         [ProducesResponseType(typeof(Operation[]), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetOperations()
         {
-            var result = RetrieveOperations();
+            var result = serviceProvider.RetrieveOperations();
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -167,22 +153,22 @@
         /// </summary>
         /// <returns></returns>
         /// <response code="200">Success</response>
-        /// <response code="404">Submodel not found / No Events found</response>      
+        /// <response code="404">Submodel not found</response>      
         [HttpGet("submodel/events", Name = "GetEvents")]
         [ProducesResponseType(typeof(Event[]), 200)]
         [ProducesResponseType(typeof(Result), 404)]
         public IActionResult GetEvents()
         {
-            var result = RetrieveEvents();
+            var result = serviceProvider.RetrieveEvents();
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
 
         #region SubmodelElement - REST-Calls
         /// <summary>
-        /// Adds a new Submodel Element to the Submodel
+        /// Adds a new Submodel-Element to the Submodel
         /// </summary>
-        /// <param name="submodelElement">The serialized Submodel Element object</param>
+        /// <param name="submodelElement">The Submodel-Element object</param>
         /// <returns></returns>
         /// <response code="201">Submodel Element created successfully</response>
         /// <response code="400">Bad Request</response>
@@ -196,18 +182,18 @@
             if(submodelElement == null)
                 return ResultHandling.NullResult(nameof(submodelElement));
 
-            var result = CreateSubmodelElement(submodelElement);
+            var result = serviceProvider.CreateSubmodelElement(submodelElement);
             return result.CreateActionResult(CrudOperation.Create, "submodel/submodelElements/" + submodelElement.IdShort);
         }
                 
 
         /// <summary>
-        /// Retrieves a specific Submodel Element from the Submodel
+        /// Retrieves a specific Submodel-Element from the Submodel
         /// </summary>
-        /// <param name="submodelElementIdShort">The Submodel Element's short id</param>
+        /// <param name="submodelElementIdShort">The Submodel-Element's short id</param>
         /// <returns></returns>
-        /// <response code="200">Returns the requested Submodel Element</response>
-        /// <response code="404">Submodel/Submodel Element not found</response>     
+        /// <response code="200">Returns the requested Submodel-Element</response>
+        /// <response code="404">Submodel / Submodel Element not found</response>     
         [HttpGet("submodel/submodelElements/{*submodelElementIdShort}", Name = "GetSubmodelElementByIdShort")]
         [ProducesResponseType(typeof(Property), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -216,17 +202,17 @@
             if (string.IsNullOrEmpty(submodelElementIdShort))
                 return ResultHandling.NullResult(nameof(submodelElementIdShort));
 
-            var result = RetrieveSubmodelElement(submodelElementIdShort);                     
+            var result = serviceProvider.RetrieveSubmodelElement(submodelElementIdShort);                     
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
         /// <summary>
-        /// Deletes a specific Submodel Element from the Submodel
+        /// Deletes a specific Submodel-Element from the Submodel
         /// </summary>
-        /// <param name="submodelElementIdShort">The Submodel Element's short id</param>
+        /// <param name="submodelElementIdShort">The Submodel-Element's short id</param>
         /// <returns></returns>
-        /// <response code="204">Submodel Element deleted successfully</response>
-        /// <response code="404">Submodel/Submodel Element not found</response>
+        /// <response code="204">Submodel-Element deleted successfully</response>
+        /// <response code="404">Submodel / Submodel-Element not found</response>
         [HttpDelete("submodel/submodelElements/{*submodelElementIdShort}", Name = "DeleteSubmodelElementByIdShort")]
         [ProducesResponseType(typeof(Result), 200)]
         public IActionResult DeleteSubmodelElementByIdShort(string submodelElementIdShort)
@@ -234,38 +220,17 @@
             if (string.IsNullOrEmpty(submodelElementIdShort))
                 return ResultHandling.NullResult(nameof(submodelElementIdShort));
 
-            var result = DeleteSubmodelElement(submodelElementIdShort);
+            var result = serviceProvider.DeleteSubmodelElement(submodelElementIdShort);
             return result.CreateActionResult(CrudOperation.Delete);
         }
         #endregion
-        #region Property - REST-Calls
-        /// <summary>
-        /// Adds a new Property to the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="property">The serialized Property object</param>
-        /// <returns></returns>
-        /// <response code="201">Property created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("submodel/properties", Name = "PutProperty")]
-        [ProducesResponseType(typeof(Property), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult PutProperty([FromBody] IProperty property)
-        {
-            if (property == null)
-                return ResultHandling.NullResult(nameof(property));
-
-            var result = CreateProperty(property);
-            return result.CreateActionResult(CrudOperation.Create, "submodel/properties/" + property.IdShort);
-        }
         /// <summary>
         /// Retrieves a specific Property from the Asset Administrations's Submodel
         /// </summary>
         /// <param name="propertyIdShort">The Property's short id</param>
         /// <returns></returns>
         /// <response code="200">Returns the requested Property</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="404">Submodel / Property not found</response>     
         [HttpGet("submodel/properties/{propertyIdShort}", Name = "GetPropertyByIdShort")]
         [ProducesResponseType(typeof(Property), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -274,7 +239,7 @@
             if (string.IsNullOrEmpty(propertyIdShort))
                 return ResultHandling.NullResult(nameof(propertyIdShort));
 
-            var result = RetrieveProperty(propertyIdShort);
+            var result = serviceProvider.RetrieveProperty(propertyIdShort);
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -284,7 +249,7 @@
         /// <param name="propertyIdShort">The Property's short id</param>
         /// <returns></returns>
         /// <response code="200">Returns the requested Property's value</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="404">Submodel / Property not found</response>     
         [HttpGet("submodel/properties/{propertyIdShort}/value", Name = "GetPropertyValueByIdShort")]
         [ProducesResponseType(typeof(ElementValue), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -293,7 +258,7 @@
             if (string.IsNullOrEmpty(propertyIdShort))
                 return ResultHandling.NullResult(nameof(propertyIdShort));
 
-            var result = RetrievePropertyValue(propertyIdShort);
+            var result = serviceProvider.RetrievePropertyValue(propertyIdShort);
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
 
@@ -304,7 +269,7 @@
         /// <param name="value">The new value</param>
         /// <returns></returns>
         /// <response code="200">Property's value changed successfully</response>
-        /// <response code="404">Submodel/Property not found</response>     
+        /// <response code="404">Submodel / Property not found</response>     
         [HttpPut("submodel/properties/{propertyIdShort}/value", Name = "PutPropertyValueByIdShort")]
         [ProducesResponseType(typeof(ElementValue), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -313,55 +278,19 @@
             if (string.IsNullOrEmpty(propertyIdShort))
                 return ResultHandling.NullResult(nameof(propertyIdShort));
 
-            var result = UpdatePropertyValue(propertyIdShort, value);
+            var result = serviceProvider.UpdatePropertyValue(propertyIdShort, value);
             return result.CreateActionResult(CrudOperation.Update);
         }
-        /// <summary>
-        /// Deletes a specific Property from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="propertyIdShort">The Property's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Property deleted successfully</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("submodel/properties/{propertyIdShort}", Name = "DeletePropertyByIdShort")]
-        [ProducesResponseType(typeof(Result), 200)]
-        public IActionResult DeletePropertyByIdShort(string propertyIdShort)
-        {
-            if (string.IsNullOrEmpty(propertyIdShort))
-                return ResultHandling.NullResult(nameof(propertyIdShort));
 
-            var result = DeleteProperty(propertyIdShort);
-            return result.CreateActionResult(CrudOperation.Delete);
-        }
         #endregion
         #region Operation - REST-Calls
         /// <summary>
-        /// Adds a new operation to the Asset Administraiton Shell's Submodel
-        /// </summary>
-        /// <param name="operation">The serialized Operation object</param>
-        /// <returns></returns>
-        /// <response code="201">Operation created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("submodel/operations", Name = "PutOperation")]
-        [ProducesResponseType(typeof(Operation), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult PutOperation([FromBody] IOperation operation)
-        {
-            if (operation == null)
-                return ResultHandling.NullResult(nameof(operation));
-
-            var result = CreateOperation(operation);
-            return result.CreateActionResult(CrudOperation.Create, "submodel/operations/" + operation.IdShort);
-        }
-        /// <summary>
         /// Retrieves a specific Operation from the Asset Administration Shell's Submodel
         /// </summary>
         /// <param name="operationIdShort">The Operation's short id</param>
         /// <returns></returns>
         /// <response code="200">Success</response>
-        /// <response code="404">Submodel/Operation not found</response>     
+        /// <response code="404">Submodel / Operation not found</response>     
         [HttpGet("submodel/operations/{operationIdShort}", Name = "GetOperationByIdShort")]
         [ProducesResponseType(typeof(Operation), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -370,27 +299,10 @@
             if (string.IsNullOrEmpty(operationIdShort))
                 return ResultHandling.NullResult(nameof(operationIdShort));
 
-            var result = RetrieveOperation(operationIdShort);
+            var result = serviceProvider.RetrieveOperation(operationIdShort);
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
         /// <summary>
-        /// Deletes a specific Operation from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="operationIdShort">The Operation's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Operation deleted successfully</response>  
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("submodel/operations/{operationIdShort}", Name = "DeleteOperationByIdShort")]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult DeleteOperationByIdShort(string operationIdShort)
-        {
-            if (string.IsNullOrEmpty(operationIdShort))
-                return ResultHandling.NullResult(nameof(operationIdShort));
-
-            var result = DeleteOperation(operationIdShort);
-            return result.CreateActionResult(CrudOperation.Delete);
-        }
-        /// <summary>
         /// Synchronously invokes a specific operation from the Submodel
         /// </summary>
         /// <param name="operationIdShort">The Operation's short id</param>
@@ -398,7 +310,7 @@
         /// <returns></returns>
         /// <response code="200">Operation invoked successfully</response>
         /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel / Method handler not found</response>
+        /// <response code="404">Submodel / Operation not found</response>
         [HttpPost("submodel/operations/{operationIdShort}", Name = "InvokeOperationByIdShort")]
         [ProducesResponseType(typeof(InvocationResponse), 200)]
         [ProducesResponseType(typeof(Result), 400)]
@@ -410,7 +322,7 @@
             if (invocationRequest == null)
                 return ResultHandling.NullResult(nameof(invocationRequest));
 
-            IResult<InvocationResponse> result = InvokeOperation(operationIdShort, invocationRequest);
+            IResult<InvocationResponse> result = serviceProvider.InvokeOperation(operationIdShort, invocationRequest);
             return result.CreateActionResult(CrudOperation.Invoke);
         }
 
@@ -434,7 +346,7 @@
             if (invocationRequest == null)
                 return ResultHandling.NullResult(nameof(invocationRequest));
 
-            IResult<CallbackResponse> result = InvokeOperationAsync(operationIdShort, invocationRequest);
+            IResult<CallbackResponse> result = serviceProvider.InvokeOperationAsync(operationIdShort, invocationRequest);
             return result.CreateActionResult(CrudOperation.Invoke);
         }
 
@@ -458,39 +370,19 @@
             if (string.IsNullOrEmpty(requestId))
                 return ResultHandling.NullResult(nameof(requestId));
 
-            IResult<InvocationResponse> result = GetInvocationResult(operationIdShort, requestId);
+            IResult<InvocationResponse> result = serviceProvider.GetInvocationResult(operationIdShort, requestId);
             return result.CreateActionResult(CrudOperation.Invoke);
         }
 
         #endregion
         #region Event - REST-Calls
         /// <summary>
-        /// Adds a new event to the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="eventable">The serialized Event object</param>
-        /// <returns></returns>
-        /// <response code="201">Event created successfully</response>
-        /// <response code="400">Bad Request</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpPut("submodel/events", Name = "PutEvent")]
-        [ProducesResponseType(typeof(Event), 201)]
-        [ProducesResponseType(typeof(Result), 400)]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult PutEvent([FromBody] IEvent eventable)
-        {
-            if (eventable == null)
-                return ResultHandling.NullResult(nameof(eventable));
-
-            var result = CreateEvent(eventable);
-            return result.CreateActionResult(CrudOperation.Create, "submodel/events/" + eventable.IdShort);
-        }
-        /// <summary>
         /// Retrieves a specific event from the Asset Administration Shell's Submodel
         /// </summary>
         /// <param name="eventIdShort">The Event's short id</param>
         /// <returns></returns>
         /// <response code="200">Success</response>
-        /// <response code="404">Submodel/Event not found</response>     
+        /// <response code="404">Submodel / Event not found</response>     
         [HttpGet("submodel/events/{eventIdShort}", Name = "GetEventByIdShort")]
         [ProducesResponseType(typeof(Event), 200)]
         [ProducesResponseType(typeof(Result), 404)]
@@ -499,198 +391,9 @@
             if (string.IsNullOrEmpty(eventIdShort))
                 return ResultHandling.NullResult(nameof(eventIdShort));
 
-            var result = RetrieveEvent(eventIdShort);
+            var result = serviceProvider.RetrieveEvent(eventIdShort);
             return result.CreateActionResult(CrudOperation.Retrieve);
         }
-        /// <summary>
-        /// Deletes a specific event from the Asset Administration Shell's Submodel
-        /// </summary>
-        /// <param name="eventIdShort">The Event's short id</param>
-        /// <returns></returns>
-        /// <response code="204">Event deleted successfully</response>
-        /// <response code="404">Submodel not found</response>
-        [HttpDelete("submodel/events/{eventIdShort}", Name = "DeleteEventByIdShort")]
-        [ProducesResponseType(typeof(Result), 404)]
-        public IActionResult DeleteEventByIdShort(string eventIdShort)
-        {
-            if (string.IsNullOrEmpty(eventIdShort))
-                return ResultHandling.NullResult(nameof(eventIdShort));
-
-            var result = DeleteEvent(eventIdShort);
-            return result.CreateActionResult(CrudOperation.Delete);
-        }
-
-
-        #endregion
-
-        #endregion
-
-        #region Interface Implementation SubmodelServiceProvider
-
-        public IResult<IOperation> CreateOperation(IOperation operation)
-        {
-            return submodelServiceProvider.CreateOperation(operation);
-        }
-
-        public IResult<IElementContainer<IOperation>> RetrieveOperations()
-        {
-            return submodelServiceProvider.RetrieveOperations();
-        }
-
-        public IResult<IOperation> RetrieveOperation(string operationId)
-        {
-            return submodelServiceProvider.RetrieveOperation(operationId);
-        }
-
-        public IResult DeleteOperation(string operationId)
-        {
-            return submodelServiceProvider.DeleteOperation(operationId);
-        }
-
-        public IResult<InvocationResponse> InvokeOperation(string operationId, InvocationRequest invocationRequest)
-        {
-            return submodelServiceProvider.InvokeOperation(operationId, invocationRequest);
-        }
-
-        public IResult<IProperty> CreateProperty(IProperty property)
-        {
-            return submodelServiceProvider.CreateProperty(property);
-        }
-
-        public IResult<IElementContainer<IProperty>> RetrieveProperties()
-        {
-            return submodelServiceProvider.RetrieveProperties();
-        }
-
-        public IResult<IProperty> RetrieveProperty(string propertyId)
-        {
-            return submodelServiceProvider.RetrieveProperty(propertyId);
-        }
-
-        public IResult UpdatePropertyValue(string propertyId, IValue propertyValue)
-        {
-            return submodelServiceProvider.UpdatePropertyValue(propertyId, propertyValue);
-        }
-
-        public IResult DeleteProperty(string propertyId)
-        {
-            return submodelServiceProvider.DeleteProperty(propertyId);
-        }
-
-        public IResult<IEvent> CreateEvent(IEvent eventable)
-        {
-            return submodelServiceProvider.CreateEvent(eventable);
-        }
-
-        public IResult<IElementContainer<IEvent>> RetrieveEvents()
-        {
-            return submodelServiceProvider.RetrieveEvents();
-        }
-
-        public IResult<IEvent> RetrieveEvent(string eventId)
-        {
-            return submodelServiceProvider.RetrieveEvent(eventId);
-        }
-
-        public IResult ThrowEvent(IPublishableEvent publishableEvent, string topic, Action<IMessagePublishedEventArgs> MessagePublished, byte qosLevel, bool retain)
-        {
-            return submodelServiceProvider.ThrowEvent(publishableEvent, topic, MessagePublished, qosLevel, retain);
-        }
-
-        public IResult DeleteEvent(string eventId)
-        {
-            return submodelServiceProvider.DeleteEvent(eventId);
-        }
-
-        public Delegate RetrieveMethodDelegate(string operationId)
-        {
-            return submodelServiceProvider.RetrieveMethodDelegate(operationId);
-        }
-
-        public void RegisterMethodCalledHandler(string operationId, Delegate handler)
-        {
-            submodelServiceProvider.RegisterMethodCalledHandler(operationId, handler);
-        }
-
-        public void ConfigureEventHandler(IMessageClient messageClient)
-        {
-            submodelServiceProvider.ConfigureEventHandler(messageClient);
-        }
-
-        public IResult<IValue> RetrievePropertyValue(string propertyId)
-        {
-            return submodelServiceProvider.RetrievePropertyValue(propertyId);
-        }
-
-        public PropertyHandler RetrievePropertyHandler(string propertyId)
-        {
-            return submodelServiceProvider.RetrievePropertyHandler(propertyId);
-        }
-
-        public void RegisterPropertyHandler(string propertyId, PropertyHandler handler)
-        {
-            submodelServiceProvider.RegisterPropertyHandler(propertyId, handler);
-        }
-
-        public void SubscribeUpdates(string propertyId, Action<IValue> updateFunction)
-        {
-            submodelServiceProvider.SubscribeUpdates(propertyId, updateFunction);
-        }
-
-        public void PublishUpdate(string propertyId, IValue propertyValue)
-        {
-            submodelServiceProvider.PublishUpdate(propertyId, propertyValue);
-        }
-
-        public IResult<ISubmodel> RetrieveSubmodel()
-        {
-            return submodelServiceProvider.RetrieveSubmodel();
-        }
-
-        public void RegisterEventDelegate(string eventId, EventDelegate eventDelegate)
-        {
-            submodelServiceProvider.RegisterEventDelegate(eventId, eventDelegate);
-        }
-
-        public IResult<ISubmodelElement> CreateSubmodelElement(ISubmodelElement submodelElement)
-        {
-            return submodelServiceProvider.CreateSubmodelElement(submodelElement);
-        }
-
-        public IResult<IElementContainer<ISubmodelElement>> RetrieveSubmodelElements()
-        {
-            return submodelServiceProvider.RetrieveSubmodelElements();
-        }
-
-        public IResult<ISubmodelElement> RetrieveSubmodelElement(string submodelElementId)
-        {
-            return submodelServiceProvider.RetrieveSubmodelElement(submodelElementId);
-        }
-
-        public IResult<IValue> RetrieveSubmodelElementValue(string submodelElementId)
-        {
-            return submodelServiceProvider.RetrieveSubmodelElementValue(submodelElementId);
-        }
-
-        public IResult UpdateSubmodelElement(string submodelElementId, ISubmodelElement submodelElement)
-        {
-            return submodelServiceProvider.UpdateSubmodelElement(submodelElementId, submodelElement);
-        }
-
-        public IResult DeleteSubmodelElement(string submodelElementId)
-        {
-            return submodelServiceProvider.DeleteSubmodelElement(submodelElementId);
-        }
-
-        public IResult<CallbackResponse> InvokeOperationAsync(string operationId, InvocationRequest invocationRequest)
-        {
-            return submodelServiceProvider.InvokeOperationAsync(operationId, invocationRequest);
-        }
-
-        public IResult<InvocationResponse> GetInvocationResult(string operationId, string requestId)
-        {
-            return submodelServiceProvider.GetInvocationResult(operationId, requestId);
-        }
 
         #endregion
 
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/BaSyx.API.Http.Controllers.xml b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/BaSyx.API.Http.Controllers.xml
index c1cf13c..6199a83 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/BaSyx.API.Http.Controllers.xml
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/BaSyx.API.Http.Controllers.xml
@@ -55,13 +55,18 @@
             All Asset Administration Shell Services provided by the component
             </summary>
         </member>
+        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.#ctor(BaSyx.API.Components.IAssetAdministrationShellServiceProvider)">
+            <summary>
+            Constructor for the Asset Administration Shell Services Controller
+            </summary>
+            <param name="assetAdministrationShellServiceProvider">The Asset Administration Shell Service Provider implementation provided by the dependency injection</param>
+        </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.GetAssetAdministrationShell">
             <summary>
-            Retrieves the Asset Administration Shell
+            Retrieves the Asset Administration Shell Descriptor
             </summary>
             <returns></returns>
-            <response code="200">Success</response>
-            <response code="502">Bad Gateway - Asset Administration Shell not available</response>       
+            <response code="200">Success</response>   
         </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.PutSubmodelToShell(BaSyx.Models.Core.AssetAdministrationShell.Generics.ISubmodel)">
             <summary>
@@ -146,8 +151,8 @@
             </summary>
             <param name="submodelElementIdShort">The Submodel-Element's short id</param>
             <returns></returns>
-            <response code="200">Returns the requested Property</response>
-            <response code="404">Submodel/Property not found</response>     
+            <response code="200">Returns the requested Submodel-Element</response>
+            <response code="404">Submodel / Submodel-Element not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedDeleteSubmodelElementByIdShort(System.String)">
             <summary>
@@ -158,24 +163,14 @@
             <response code="204">Submodel-Element deleted successfully</response>
             <response code="404">Submodel not found</response>
         </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedPutProperty(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IProperty)">
-            <summary>
-            Creates or updated a Property to the Asset Administration Shell's Submodel
-            </summary>
-            <param name="property">The Property's description object</param>
-            <returns></returns>
-            <response code="201">Property created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
-        </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedGetPropertyByIdShort(System.String)">
             <summary>
-            Retrieves a specific Property from the Asset Administrations's Submodel
+            Retrieves a specific Property from the Asset Administration Shell's Submodel
             </summary>
             <param name="propertyIdShort">The Property's short id</param>
             <returns></returns>
             <response code="200">Returns the requested Property</response>
-            <response code="404">Submodel/Property not found</response>     
+            <response code="404">Submodel / Property not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedGetPropertyValueByIdShort(System.String)">
             <summary>
@@ -184,11 +179,11 @@
             <param name="propertyIdShort">The Property's short id</param>
             <returns></returns>
             <response code="200">Returns the requested Property's value</response>
-            <response code="404">Submodel/Property not found</response>     
+            <response code="404">Submodel / Property not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedPutPropertyValueByIdShort(System.String,BaSyx.Models.Core.Common.IValue)">
             <summary>
-            Updates the Asset Administration Shell's Submodel's Property
+            Updates the Asset Administration Shell's Submodel's Property's value
             </summary>
             <param name="propertyIdShort">The Property's short id</param>
             <param name="value">The new value</param>
@@ -196,25 +191,6 @@
             <response code="200">Property's value changed successfully</response>
             <response code="404">Submodel/Property not found</response>     
         </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedDeletePropertyByIdShort(System.String)">
-            <summary>
-            Deletes a specific Property from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="propertyIdShort">The Property's short id</param>
-            <returns></returns>
-            <response code="204">Property deleted successfully</response>
-            <response code="404">Submodel not found</response>
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedPutOperation(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IOperation)">
-            <summary>
-            Adds a new operation to the Asset Administration Shell's Submodel
-            </summary>
-            <param name="operation">The serialized Operation object</param>
-            <returns></returns>
-            <response code="201">Operation created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
-        </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedGetOperationByIdShort(System.String)">
             <summary>
             Retrieves a specific Operation from the Asset Administration Shell's Submodel
@@ -222,16 +198,7 @@
             <param name="operationIdShort">The Operation's short id</param>
             <returns></returns>
             <response code="200">Success</response>
-            <response code="404">Submodel/Operation not found</response>     
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedDeleteOperationByIdShort(System.String)">
-            <summary>
-            Deletes a specific Operation from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="operationIdShort">The Operation's short id</param>
-            <returns></returns>
-            <response code="204">Operation deleted successfully</response>  
-            <response code="404">Submodel not found</response>
+            <response code="404">Submodel / Operation not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedInvokeOperationByIdShort(System.String,BaSyx.Models.Communication.InvocationRequest)">
             <summary>
@@ -244,16 +211,6 @@
             <response code="400">Bad Request</response>
             <response code="404">Submodel / Method handler not found</response>
         </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedPutEvent(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IEvent)">
-            <summary>
-            Adds a new event to the Asset Administration Shell's Submodel
-            </summary>
-            <param name="eventable">The Event description object</param>
-            <returns></returns>
-            <response code="201">Event created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
-        </member>
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedGetEventByIdShort(System.String)">
             <summary>
             Retrieves a specific event from the Asset Administration Shell's Submodel
@@ -263,15 +220,6 @@
             <response code="200">Success</response>
             <response code="404">Submodel/Event not found</response>     
         </member>
-        <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellServices.RoutedDeleteEventByIdShort(System.String)">
-            <summary>
-            Deletes a specific event from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="eventIdShort">The Event's short id</param>
-            <returns></returns>
-            <response code="204">Event deleted successfully</response>
-            <response code="404">Submodel not found</response>
-        </member>
         <member name="T:BaSyx.API.Http.Controllers.SubmodelRepositoryServices">
             <summary>
             The Submodel Repository Controller
@@ -323,6 +271,12 @@
             All Asset Administration Shell Services provided by the component
             </summary>
         </member>
+        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.#ctor(BaSyx.API.Components.ISubmodelServiceProvider)">
+            <summary>
+            Constructor for the Submodel Services Controller
+            </summary>
+            <param name="submodelServiceProvider">The Submodel Service Provider implementation provided by the dependency injection</param>
+        </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetSubmodelAsTable(System.String)">
             <summary>
             Retrieves a customizable table version of a Submodel
@@ -354,7 +308,7 @@
             </summary>
             <returns></returns>
             <response code="200">Returns a list of found SubmodelElements</response>
-            <response code="404">Submodel not found / No SubmodelElements found</response>       
+            <response code="404">Submodel not found</response>       
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetProperties">
             <summary>
@@ -362,7 +316,7 @@
             </summary>
             <returns></returns>
             <response code="200">Returns a list of found Properties</response>
-            <response code="404">Submodel not found / No Properties found</response>       
+            <response code="404">Submodel not found</response>       
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetOperations">
             <summary>
@@ -370,7 +324,7 @@
             </summary>
             <returns></returns>
             <response code="200">Success</response>
-            <response code="404">Submodel not found / No Operations found</response>      
+            <response code="404">Submodel not found</response>      
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetEvents">
             <summary>
@@ -378,13 +332,13 @@
             </summary>
             <returns></returns>
             <response code="200">Success</response>
-            <response code="404">Submodel not found / No Events found</response>      
+            <response code="404">Submodel not found</response>      
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.PutSubmodelElement(BaSyx.Models.Core.AssetAdministrationShell.Generics.ISubmodelElement)">
             <summary>
-            Adds a new Submodel Element to the Submodel
+            Adds a new Submodel-Element to the Submodel
             </summary>
-            <param name="submodelElement">The serialized Submodel Element object</param>
+            <param name="submodelElement">The Submodel-Element object</param>
             <returns></returns>
             <response code="201">Submodel Element created successfully</response>
             <response code="400">Bad Request</response>
@@ -392,31 +346,21 @@
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetSubmodelElementByIdShort(System.String)">
             <summary>
-            Retrieves a specific Submodel Element from the Submodel
+            Retrieves a specific Submodel-Element from the Submodel
             </summary>
-            <param name="submodelElementIdShort">The Submodel Element's short id</param>
+            <param name="submodelElementIdShort">The Submodel-Element's short id</param>
             <returns></returns>
-            <response code="200">Returns the requested Submodel Element</response>
-            <response code="404">Submodel/Submodel Element not found</response>     
+            <response code="200">Returns the requested Submodel-Element</response>
+            <response code="404">Submodel / Submodel Element not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.DeleteSubmodelElementByIdShort(System.String)">
             <summary>
-            Deletes a specific Submodel Element from the Submodel
+            Deletes a specific Submodel-Element from the Submodel
             </summary>
-            <param name="submodelElementIdShort">The Submodel Element's short id</param>
+            <param name="submodelElementIdShort">The Submodel-Element's short id</param>
             <returns></returns>
-            <response code="204">Submodel Element deleted successfully</response>
-            <response code="404">Submodel/Submodel Element not found</response>
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.PutProperty(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IProperty)">
-            <summary>
-            Adds a new Property to the Asset Administration Shell's Submodel
-            </summary>
-            <param name="property">The serialized Property object</param>
-            <returns></returns>
-            <response code="201">Property created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
+            <response code="204">Submodel-Element deleted successfully</response>
+            <response code="404">Submodel / Submodel-Element not found</response>
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetPropertyByIdShort(System.String)">
             <summary>
@@ -425,7 +369,7 @@
             <param name="propertyIdShort">The Property's short id</param>
             <returns></returns>
             <response code="200">Returns the requested Property</response>
-            <response code="404">Submodel/Property not found</response>     
+            <response code="404">Submodel / Property not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetPropertyValueByIdShort(System.String)">
             <summary>
@@ -434,7 +378,7 @@
             <param name="propertyIdShort">The Property's short id</param>
             <returns></returns>
             <response code="200">Returns the requested Property's value</response>
-            <response code="404">Submodel/Property not found</response>     
+            <response code="404">Submodel / Property not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.PutPropertyValueByIdShort(System.String,BaSyx.Models.Core.Common.IValue)">
             <summary>
@@ -444,26 +388,7 @@
             <param name="value">The new value</param>
             <returns></returns>
             <response code="200">Property's value changed successfully</response>
-            <response code="404">Submodel/Property not found</response>     
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.DeletePropertyByIdShort(System.String)">
-            <summary>
-            Deletes a specific Property from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="propertyIdShort">The Property's short id</param>
-            <returns></returns>
-            <response code="204">Property deleted successfully</response>
-            <response code="404">Submodel not found</response>
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.PutOperation(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IOperation)">
-            <summary>
-            Adds a new operation to the Asset Administraiton Shell's Submodel
-            </summary>
-            <param name="operation">The serialized Operation object</param>
-            <returns></returns>
-            <response code="201">Operation created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
+            <response code="404">Submodel / Property not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetOperationByIdShort(System.String)">
             <summary>
@@ -472,16 +397,7 @@
             <param name="operationIdShort">The Operation's short id</param>
             <returns></returns>
             <response code="200">Success</response>
-            <response code="404">Submodel/Operation not found</response>     
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.DeleteOperationByIdShort(System.String)">
-            <summary>
-            Deletes a specific Operation from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="operationIdShort">The Operation's short id</param>
-            <returns></returns>
-            <response code="204">Operation deleted successfully</response>  
-            <response code="404">Submodel not found</response>
+            <response code="404">Submodel / Operation not found</response>     
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.InvokeOperationByIdShort(System.String,BaSyx.Models.Communication.InvocationRequest)">
             <summary>
@@ -492,7 +408,7 @@
             <returns></returns>
             <response code="200">Operation invoked successfully</response>
             <response code="400">Bad Request</response>
-            <response code="404">Submodel / Method handler not found</response>
+            <response code="404">Submodel / Operation not found</response>
         </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.InvokeOperationByIdShortAsync(System.String,BaSyx.Models.Communication.InvocationRequest)">
             <summary>
@@ -516,16 +432,6 @@
             <response code="400">Bad Request</response>
             <response code="404">Submodel / Operation / Request not found</response>
         </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.PutEvent(BaSyx.Models.Core.AssetAdministrationShell.Generics.SubmodelElementTypes.IEvent)">
-            <summary>
-            Adds a new event to the Asset Administration Shell's Submodel
-            </summary>
-            <param name="eventable">The serialized Event object</param>
-            <returns></returns>
-            <response code="201">Event created successfully</response>
-            <response code="400">Bad Request</response>
-            <response code="404">Submodel not found</response>
-        </member>
         <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.GetEventByIdShort(System.String)">
             <summary>
             Retrieves a specific event from the Asset Administration Shell's Submodel
@@ -533,16 +439,7 @@
             <param name="eventIdShort">The Event's short id</param>
             <returns></returns>
             <response code="200">Success</response>
-            <response code="404">Submodel/Event not found</response>     
-        </member>
-        <member name="M:BaSyx.API.Http.Controllers.SubmodelServices.DeleteEventByIdShort(System.String)">
-            <summary>
-            Deletes a specific event from the Asset Administration Shell's Submodel
-            </summary>
-            <param name="eventIdShort">The Event's short id</param>
-            <returns></returns>
-            <response code="204">Event deleted successfully</response>
-            <response code="404">Submodel not found</response>
+            <response code="404">Submodel / Event not found</response>     
         </member>
         <member name="T:BaSyx.API.Http.Controllers.AssetAdministrationShellRegistry">
             <summary>
@@ -667,5 +564,56 @@
         <member name="M:BaSyx.API.Http.Controllers.AssetAdministrationShellRegistry.RetrieveAllSubmodelRegistrations(System.String)">
             <inheritdoc/>
         </member>
+        <member name="T:BaSyx.API.Http.Controllers.ResultHandling">
+            <summary>
+            Helper class for handling Action Results for HTTP-Requests
+            </summary>
+        </member>
+        <member name="M:BaSyx.API.Http.Controllers.ResultHandling.NullResult(System.String)">
+            <summary>
+            Returns a Result-Object in an ObjectResult with status code 400 and a message which element is null or empty
+            </summary>
+            <param name="elementName">The name of the element which is null or empty</param>
+            <returns></returns>
+        </member>
+        <member name="M:BaSyx.API.Http.Controllers.ResultHandling.CreateActionResult(BaSyx.Utils.ResultHandling.IResult,BaSyx.API.Http.Controllers.CrudOperation,System.String)">
+            <summary>
+            Returns a Result-Object wrapped in an ObjectResult according to the CRUD-operation
+            </summary>
+            <param name="result">The orignary Result object</param>
+            <param name="crud">The CRUD-operation taken</param>
+            <param name="route">Optional route for Create-Operations</param>
+            <returns></returns>
+        </member>
+        <member name="T:BaSyx.API.Http.Controllers.CrudOperation">
+            <summary>
+            Enumeration of the different CRUD-Operations
+            </summary>
+        </member>
+        <member name="F:BaSyx.API.Http.Controllers.CrudOperation.Create">
+            <summary>
+            Create
+            </summary>
+        </member>
+        <member name="F:BaSyx.API.Http.Controllers.CrudOperation.Retrieve">
+            <summary>
+            Retrieve
+            </summary>
+        </member>
+        <member name="F:BaSyx.API.Http.Controllers.CrudOperation.Update">
+            <summary>
+            Update
+            </summary>
+        </member>
+        <member name="F:BaSyx.API.Http.Controllers.CrudOperation.Delete">
+            <summary>
+            Delete
+            </summary>
+        </member>
+        <member name="F:BaSyx.API.Http.Controllers.CrudOperation.Invoke">
+            <summary>
+            Invoke
+            </summary>
+        </member>
     </members>
 </doc>
diff --git a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/ResultHandling.cs b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/ResultHandling.cs
index b538609..4129c86 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/ResultHandling.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API.Http.Controllers/ResultHandling.cs
@@ -4,8 +4,16 @@
 
 namespace BaSyx.API.Http.Controllers
 {
+    /// <summary>
+    /// Helper class for handling Action Results for HTTP-Requests
+    /// </summary>
     public static class ResultHandling
     {
+        /// <summary>
+        /// Returns a Result-Object in an ObjectResult with status code 400 and a message which element is null or empty
+        /// </summary>
+        /// <param name="elementName">The name of the element which is null or empty</param>
+        /// <returns></returns>
         public static IActionResult NullResult(string elementName)
         {
             ObjectResult objectResult = new ObjectResult(new Result(false, new Message(MessageType.Error, $"Argument {elementName} is null or empty")))
@@ -14,13 +22,21 @@
             };
             return objectResult;
         }
-
+        /// <summary>
+        /// Returns a Result-Object wrapped in an ObjectResult according to the CRUD-operation
+        /// </summary>
+        /// <param name="result">The orignary Result object</param>
+        /// <param name="crud">The CRUD-operation taken</param>
+        /// <param name="route">Optional route for Create-Operations</param>
+        /// <returns></returns>
         public static IActionResult CreateActionResult(this IResult result, CrudOperation crud, string route = null)
         {
             if (result == null)
             {
-                ObjectResult objectResult = new ObjectResult(new Result(false, new Message(MessageType.Error, "Result object is null")));
-                objectResult.StatusCode = 500;
+                ObjectResult objectResult = new ObjectResult(new Result(false, new Message(MessageType.Error, "Result object is null")))
+                {
+                    StatusCode = 500
+                };
                 return objectResult;
             }
 
@@ -67,12 +83,30 @@
             return new BadRequestObjectResult(result);
         }
     }
+    /// <summary>
+    /// Enumeration of the different CRUD-Operations
+    /// </summary>
     public enum CrudOperation
     {
+        /// <summary>
+        /// Create
+        /// </summary>
         Create,
+        /// <summary>
+        /// Retrieve
+        /// </summary>
         Retrieve,
+        /// <summary>
+        /// Update
+        /// </summary>
         Update,
+        /// <summary>
+        /// Delete
+        /// </summary>
         Delete,
+        /// <summary>
+        /// Invoke
+        /// </summary>
         Invoke
     }
 }
diff --git a/sdks/dotnet/basyx-core/BaSyx.API/Components/AssetAdministrationShellServiceProvider.cs b/sdks/dotnet/basyx-core/BaSyx.API/Components/AssetAdministrationShellServiceProvider.cs
index 845798f..1625421 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API/Components/AssetAdministrationShellServiceProvider.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API/Components/AssetAdministrationShellServiceProvider.cs
@@ -14,7 +14,6 @@
 using System.Linq;
 using BaSyx.API.AssetAdministrationShell.Extensions;
 using BaSyx.Models.Connectivity.Descriptors;
-using BaSyx.Models.Core.Common;
 
 namespace BaSyx.API.Components
 {
@@ -62,6 +61,18 @@
             BindTo(AssetAdministrationShell);
         }
 
+        public abstract IAssetAdministrationShell GenerateAssetAdministrationShell();
+
+        public virtual void BindTo(IAssetAdministrationShell element)
+        {
+            AssetAdministrationShell = element;
+            ServiceDescriptor = ServiceDescriptor ?? new AssetAdministrationShellDescriptor(element, null);
+        }
+        public virtual IAssetAdministrationShell GetBinding()
+        {
+            return AssetAdministrationShell;
+        }
+
         public virtual void UseDefaultSubmodelServiceProvider()
         {
             foreach (var submodel in AssetAdministrationShell.Submodels)
@@ -71,6 +82,14 @@
             }
         }
 
+        public virtual IResult<IEnumerable<ISubmodelServiceProvider>> GetSubmodelServiceProviders()
+        {
+            if (SubmodelServiceProviders.Values == null)
+                return new Result<IEnumerable<ISubmodelServiceProvider>>(false, new NotFoundMessage("Submodel Service Providers"));
+
+            return new Result<IEnumerable<ISubmodelServiceProvider>>(true, SubmodelServiceProviders.Values?.ToList());
+        }
+
         public virtual IResult<ISubmodelDescriptor> RegisterSubmodelServiceProvider(string submodelId, ISubmodelServiceProvider submodelServiceProvider)
         {
             if (SubmodelServiceProviders.ContainsKey(submodelId))
@@ -97,60 +116,6 @@
             }
             else
                 return new Result<ISubmodelServiceProvider>(false, new NotFoundMessage());
-        }
-
-        public abstract IAssetAdministrationShell GenerateAssetAdministrationShell();
-
-        public virtual void BindTo(IAssetAdministrationShell element)
-        {
-            AssetAdministrationShell = element;
-            ServiceDescriptor = ServiceDescriptor ?? new AssetAdministrationShellDescriptor(element, null);
-        }
-        public virtual IAssetAdministrationShell GetBinding()
-        {
-            return AssetAdministrationShell;
-        }
-
-        public virtual IResult<ISubmodel> CreateSubmodel(ISubmodel submodel)
-        {
-            if (AssetAdministrationShell.Submodels == null)
-                AssetAdministrationShell.Submodels = new ElementContainer<ISubmodel>();
-            return AssetAdministrationShell.Submodels.Create(submodel);
-        }
-
-        public virtual IResult DeleteSubmodel(string submodelId)
-        {
-            if (AssetAdministrationShell.Submodels == null)
-                return new Result(false, new NotFoundMessage(submodelId));
-            return AssetAdministrationShell.Submodels.Delete(submodelId);
-        }
-
-        public virtual IResult<ISubmodel> RetrieveSubmodel(string submodelId)
-        {
-            if (AssetAdministrationShell.Submodels == null)
-                return new Result<ISubmodel>(false, new NotFoundMessage(submodelId));
-            return AssetAdministrationShell.Submodels.Retrieve(submodelId);
-        }
-
-        public virtual IResult<IElementContainer<ISubmodel>> RetrieveSubmodels()
-        {
-            if (AssetAdministrationShell.Submodels == null)
-                return new Result<ElementContainer<ISubmodel>>(false, new NotFoundMessage("Submodels"));
-            return AssetAdministrationShell.Submodels.RetrieveAll();
-        }
-
-        public virtual IResult<IEnumerable<ISubmodelServiceProvider>> GetSubmodelServiceProviders()
-        {
-            if (SubmodelServiceProviders.Values == null)
-                return new Result<IEnumerable<ISubmodelServiceProvider>>(false, new NotFoundMessage("Submodel Service Providers"));
-
-            return new Result<IEnumerable<ISubmodelServiceProvider>>(true, SubmodelServiceProviders.Values?.ToList());
-        }
-
-        public IResult<IAssetAdministrationShell> RetrieveAssetAdministrationShell()
-        {
-            var binding = GetBinding();
-            return new Result<IAssetAdministrationShell>(binding == null, binding);
-        }
+        }     
     }
 }
diff --git a/sdks/dotnet/basyx-core/BaSyx.API/Components/IAssetAdministrationShellServiceProvider.cs b/sdks/dotnet/basyx-core/BaSyx.API/Components/IAssetAdministrationShellServiceProvider.cs
index be5f059..fe8686b 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API/Components/IAssetAdministrationShellServiceProvider.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API/Components/IAssetAdministrationShellServiceProvider.cs
@@ -8,15 +8,13 @@
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
-using BaSyx.API.Clients;
 using BaSyx.Models.Connectivity.Descriptors;
 using BaSyx.Models.Core.AssetAdministrationShell.Generics;
 
 namespace BaSyx.API.Components
 {
-    public interface IAssetAdministrationShellServiceProvider : IServiceProvider<IAssetAdministrationShell, IAssetAdministrationShellDescriptor>, IAssetAdministrationShellClient
+    public interface IAssetAdministrationShellServiceProvider : IServiceProvider<IAssetAdministrationShell, IAssetAdministrationShellDescriptor>
     {
-        IAssetAdministrationShell AssetAdministrationShell { get; }
         ISubmodelServiceProviderRegistry SubmodelRegistry { get; }
     }
 }
diff --git a/sdks/dotnet/basyx-core/BaSyx.API/Components/ISubmodelServiceProvider.cs b/sdks/dotnet/basyx-core/BaSyx.API/Components/ISubmodelServiceProvider.cs
index b9aea39..683c5c4 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API/Components/ISubmodelServiceProvider.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API/Components/ISubmodelServiceProvider.cs
@@ -22,8 +22,6 @@
 {
     public interface ISubmodelServiceProvider : IServiceProvider<ISubmodel, ISubmodelDescriptor>, ISubmodelClient
     {
-        ISubmodel Submodel { get; }
-
         void SubscribeUpdates(string propertyId, Action<IValue> updateFunction);
         void PublishUpdate(string propertyId, IValue value);
         IResult ThrowEvent(IPublishableEvent publishableEvent, string topic, Action<IMessagePublishedEventArgs> MessagePublished, byte qosLevel, bool retain);
diff --git a/sdks/dotnet/basyx-core/BaSyx.API/Components/SubmodelServiceProvider.cs b/sdks/dotnet/basyx-core/BaSyx.API/Components/SubmodelServiceProvider.cs
index b284bc5..02804c1 100644
--- a/sdks/dotnet/basyx-core/BaSyx.API/Components/SubmodelServiceProvider.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.API/Components/SubmodelServiceProvider.cs
@@ -33,11 +33,11 @@
         public ISubmodel Submodel { get; protected set; }
         public ISubmodelDescriptor ServiceDescriptor { get; internal set; }
 
-        private Dictionary<string, Delegate> methodCalledHandler;
-        private Dictionary<string, PropertyHandler> propertyHandler;
-        private Dictionary<string, Action<IValue>> updateFunctions;
-        private Dictionary<string, EventDelegate> eventDelegates;
-        private Dictionary<string, InvocationResponse> invocationResults;
+        private readonly Dictionary<string, Delegate> methodCalledHandler;
+        private readonly Dictionary<string, PropertyHandler> propertyHandler;
+        private readonly Dictionary<string, Action<IValue>> updateFunctions;
+        private readonly Dictionary<string, EventDelegate> eventDelegates;
+        private readonly Dictionary<string, InvocationResponse> invocationResults;
 
         private IMessageClient messageClient;
 
@@ -334,7 +334,7 @@
                 return new Result(false, new Message(MessageType.Warning, "MessageClient is not initialized or not connected"));
 
             if (publishableEvent == null)
-                return new Result(new ArgumentNullException("publishableEvent"));
+                return new Result(new ArgumentNullException(nameof(publishableEvent)));
 
             if (eventDelegates.TryGetValue(publishableEvent.Name, out EventDelegate eventDelegate))
                 eventDelegate.Invoke(this, publishableEvent);
@@ -566,8 +566,6 @@
                 return new Result(false, new NotFoundMessage(submodelElementId));
 
             return Submodel.SubmodelElements.Delete(submodelElementId);
-        }
-
-        
+        }        
     }
 }
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models.Export/AASX.cs b/sdks/dotnet/basyx-core/BaSyx.Models.Export/AASX.cs
index 4453aa2..15f1614 100644
--- a/sdks/dotnet/basyx-core/BaSyx.Models.Export/AASX.cs
+++ b/sdks/dotnet/basyx-core/BaSyx.Models.Export/AASX.cs
@@ -39,23 +39,23 @@
         private PackagePart originPart;
         private PackagePart specPart;
 
-        public AASX(Package package)
+        public AASX(Package aasxPackage)
         {
-            aasxPackage = package;
-
-            LoadOrCreateOrigin();
-            LoadSpec();
-        }
-
-        public AASX(string aasxFilePath)
-        {
-            aasxPackage = Package.Open(aasxFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
+            this.aasxPackage = aasxPackage ?? throw new ArgumentNullException(nameof(aasxPackage));
 
             LoadOrCreateOrigin();
             LoadSpec();
             LoadSupplementaryFiles();
         }
 
+        public AASX(string aasxFilePath) 
+            : this(Package.Open(aasxFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
+        { }
+
+        public AASX(string aasxFilePath, FileMode fileMode, FileAccess fileAccess, FileShare fileShare) 
+            : this(Package.Open(aasxFilePath, fileMode, fileAccess, fileShare))
+        { }
+
         private void LoadSupplementaryFiles()
         {
             if (specPart != null)
@@ -145,6 +145,18 @@
             }
         }
 
+        public Stream GetFileAsStream(string fileName)
+        {
+            PackagePart part = SupplementaryFiles.Find(p => p.Uri.ToString().Contains(fileName));
+            return part?.GetStream();
+        }
+
+        public Stream GetFileAsStream(Uri relativeUri)
+        {
+            PackagePart part = SupplementaryFiles.Find(p => p.Uri == relativeUri);
+            return part?.GetStream();
+        }
+
         /// <summary>
         /// Returns the AASX-Package thumbnail as stream
         /// </summary>
diff --git a/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/ComplexAssetAdministrationShellScenario.csproj b/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/ComplexAssetAdministrationShellScenario.csproj
index 2bf1c17..3f10961 100644
--- a/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/ComplexAssetAdministrationShellScenario.csproj
+++ b/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/ComplexAssetAdministrationShellScenario.csproj
@@ -3,6 +3,15 @@
   <PropertyGroup>
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
+    <Authors>Constantin Ziesche</Authors>
+    <Copyright>Copyright 2020 - Robert Bosch GmbH</Copyright>
+    <PackageProjectUrl>https://wiki.eclipse.org/BaSyx</PackageProjectUrl>
+    <RepositoryUrl>https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/sdks/csnet/</RepositoryUrl>
+    <PackageLicenseUrl></PackageLicenseUrl>
+    <Description>The official BaSyx Complex Asset Administration Shell Scenario</Description>
+    <Company>Robert Bosch GmbH</Company>
+    <PackageTags>BaSys BaSyx Complex Asset Administration Shell Scenario</PackageTags>
+    <PackageLicenseExpression>EDL-1.0</PackageLicenseExpression>
   </PropertyGroup>
 
   <ItemGroup>
diff --git a/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/Program.cs b/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/Program.cs
index c5852b6..6b37964 100644
--- a/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/Program.cs
+++ b/sdks/dotnet/basyx-examples/ComplexAssetAdministrationShellScenario/Program.cs
@@ -113,20 +113,21 @@
             {
                 for (int i = 0; i < repositoryService.ServiceDescriptor.SubmodelDescriptors.Count; i++)
                 {
-                    registryClient.DeleteSubmodel("http://basyx.de/shells/MultiAAS/" + i, repositoryService.ServiceDescriptor.SubmodelDescriptors[i].IdShort);
+                    registryClient.DeleteSubmodelRegistration("http://basyx.de/shells/MultiAAS/" + i, repositoryService.ServiceDescriptor.SubmodelDescriptors[i].IdShort);
                 }
             };
 
             multiServer.RunAsync();
 
-            var shells = registryClient.RetrieveAssetAdministrationShells();
-            var shell = shells.Entity?.FirstOrDefault(f => f.Identification.Id.Contains("SimpleAAS"));
+            var shells = registryClient.RetrieveAllAssetAdministrationShellRegistrations(p => p.Identification.Id.Contains("SimpleAAS"));
+            var shell = shells.Entity?.FirstOrDefault();
             for (int i = 0; i < repositoryService.ServiceDescriptor.SubmodelDescriptors.Count; i++)
             {
-                registryClient.CreateSubmodel("http://basyx.de/shells/MultiAAS/" + i, repositoryService.ServiceDescriptor.SubmodelDescriptors[i]);
+                var descriptor = repositoryService.ServiceDescriptor.SubmodelDescriptors[i];
+                registryClient.CreateOrUpdateSubmodelRegistration("http://basyx.de/shells/MultiAAS/" + i, descriptor.Identification.Id, descriptor);
 
                 if(shell != null)
-                    registryClient.CreateSubmodel(shell.Identification.Id, repositoryService.ServiceDescriptor.SubmodelDescriptors[i]);
+                    registryClient.CreateOrUpdateSubmodelRegistration(shell.Identification.Id, descriptor.Identification.Id, descriptor);
             }
         }
 
@@ -207,7 +208,7 @@
             {
                 foreach (var aasDescriptor in repositoryService.ServiceDescriptor.AssetAdministrationShellDescriptors)
                 {
-                    registryClient.DeleteAssetAdministrationShell(aasDescriptor.Identification.Id);
+                    registryClient.DeleteAssetAdministrationShellRegistration(aasDescriptor.Identification.Id);
                 }
             };
 
@@ -215,7 +216,7 @@
 
             foreach (var aasDescriptor in repositoryService.ServiceDescriptor.AssetAdministrationShellDescriptors)
             {
-                registryClient.CreateAssetAdministrationShell(aasDescriptor);
+                registryClient.CreateOrUpdateAssetAdministrationShellRegistration(aasDescriptor.Identification.Id, aasDescriptor);
             }
          
         }
@@ -245,11 +246,11 @@
 
             AssetAdministrationShellHttpServer aasServer = new AssetAdministrationShellHttpServer(aasServerSettings);
             aasServer.SetServiceProvider(aasServiceProvider);
-            aasServer.ApplicationStopping = () => { registryClient.DeleteAssetAdministrationShell(aas.Identification.Id); };
+            aasServer.ApplicationStopping = () => { registryClient.DeleteAssetAdministrationShellRegistration(aas.Identification.Id); };
             aasServer.RunAsync();
 
-            registryClient.CreateAssetAdministrationShell(new AssetAdministrationShellDescriptor(aas, aasServiceProvider.ServiceDescriptor.Endpoints));
-            registryClient.CreateSubmodel(aas.Identification.Id, new SubmodelDescriptor(testSubmodel, submodelServiceProvider.ServiceDescriptor.Endpoints));
+            registryClient.CreateOrUpdateAssetAdministrationShellRegistration(aas.Identification.Id, new AssetAdministrationShellDescriptor(aas, aasServiceProvider.ServiceDescriptor.Endpoints));
+            registryClient.CreateOrUpdateSubmodelRegistration(aas.Identification.Id, testSubmodel.Identification.Id, new SubmodelDescriptor(testSubmodel, submodelServiceProvider.ServiceDescriptor.Endpoints));
         }
 
         private static void LoadRegistry()
diff --git a/sdks/dotnet/basyx-examples/HelloAssetAdministrationShell/HelloAssetAdministrationShell.csproj b/sdks/dotnet/basyx-examples/HelloAssetAdministrationShell/HelloAssetAdministrationShell.csproj
index eccaa79..f4e4b33 100644
--- a/sdks/dotnet/basyx-examples/HelloAssetAdministrationShell/HelloAssetAdministrationShell.csproj
+++ b/sdks/dotnet/basyx-examples/HelloAssetAdministrationShell/HelloAssetAdministrationShell.csproj
@@ -4,7 +4,7 @@
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
     <Authors>Constantin Ziesche</Authors>
-    <Copyright>Copyright 2019 - Robert Bosch GmbH</Copyright>
+    <Copyright>Copyright 2020 - Robert Bosch GmbH</Copyright>
     <PackageProjectUrl>https://wiki.eclipse.org/BaSyx</PackageProjectUrl>
     <RepositoryUrl>https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/sdks/csnet/</RepositoryUrl>
     <PackageLicenseUrl></PackageLicenseUrl>
@@ -30,16 +30,4 @@
     <PackageReference Include="NLog" Version="4.7.0" />
   </ItemGroup>
 
-  <ItemGroup>
-    <Content Update="C:\Users\ZIC5HO\.nuget\packages\basyx.aas.server.http\1.0.0\contentFiles\any\netcoreapp3.1\AAS_Icon.ico">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Update="C:\Users\ZIC5HO\.nuget\packages\basyx.aas.server.http\1.0.0\contentFiles\any\netcoreapp3.1\NLog.config">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Update="C:\Users\ZIC5HO\.nuget\packages\basyx.aas.server.http\1.0.0\contentFiles\any\netcoreapp3.1\ServerSettings.xml">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-  </ItemGroup>
-
 </Project>
diff --git a/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/MultiAssetAdministrationShell.csproj b/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/MultiAssetAdministrationShell.csproj
index 8f7a973..cc8cd0e 100644
--- a/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/MultiAssetAdministrationShell.csproj
+++ b/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/MultiAssetAdministrationShell.csproj
@@ -4,7 +4,7 @@
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
     <Authors>Constantin Ziesche</Authors>
-    <Copyright>Copyright 2019 - Robert Bosch GmbH</Copyright>
+    <Copyright>Copyright 2020 - Robert Bosch GmbH</Copyright>
     <PackageProjectUrl>https://wiki.eclipse.org/BaSyx</PackageProjectUrl>
     <RepositoryUrl>https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/sdks/csnet/</RepositoryUrl>
     <PackageLicenseUrl></PackageLicenseUrl>
diff --git a/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/Program.cs b/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/Program.cs
index 997c9ec..ade625c 100644
--- a/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/Program.cs
+++ b/sdks/dotnet/basyx-examples/MultiAssetAdministrationShell/Program.cs
@@ -71,9 +71,10 @@
                     IdShort = "TestSubmodel",
                     SubmodelElements = new ElementContainer<ISubmodelElement>()
                     {
-                        new Property<string>()
+                        new Property<double>()
                         {
-                            IdShort = "Property_" + i
+                            IdShort = "Property_" + i,
+                            Get = prop => { return Math.Pow(i, 2); }
                         }
                     }
                 });
diff --git a/sdks/dotnet/basyx-examples/SimpleAssetAdministrationShell/SimpleAssetAdministrationShell.csproj b/sdks/dotnet/basyx-examples/SimpleAssetAdministrationShell/SimpleAssetAdministrationShell.csproj
index 527d6f5..3f7f13e 100644
--- a/sdks/dotnet/basyx-examples/SimpleAssetAdministrationShell/SimpleAssetAdministrationShell.csproj
+++ b/sdks/dotnet/basyx-examples/SimpleAssetAdministrationShell/SimpleAssetAdministrationShell.csproj
@@ -4,7 +4,7 @@
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
     <Authors>Constantin Ziesche</Authors>
-    <Copyright>Copyright 2019 - Robert Bosch GmbH</Copyright>
+    <Copyright>Copyright 2020 - Robert Bosch GmbH</Copyright>
     <PackageProjectUrl>https://wiki.eclipse.org/BaSyx</PackageProjectUrl>
     <RepositoryUrl>https://git.eclipse.org/r/plugins/gitiles/basyx/basyx/+/master/sdks/csnet/</RepositoryUrl>
     <PackageLicenseUrl></PackageLicenseUrl>
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
index 81cabad..cecbdf5 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
index ced2311..9cbde27 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
index 25c6bfa..f8ac636 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
index 789625b..6c7ac5f 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.AAS.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
index f42470d..5195027 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
index 9f41215..f8b7b9e 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
index ca099cd..011fca5 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
index 0a2a37b..84da609 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg
index 05fd87c..4d31b1c 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg
index 5f32c7a..81d53a9 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.API.Http.Controllers.AASX.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
index b8fee23..5821dda 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
index 107fde2..d0b6bd5 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Components.Common.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
index 7b0c49c..bb22b4d 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
index b22cd6a..645b662 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Discovery.mDNS.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
index f599ab7..30f6622 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
index bb5d502..903e494 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
index 263ae8e..54b594b 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
index 85ce10b..a7a1c63 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Models.Export.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
index 3f23fd0..81b5366 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
index 9748c10..e57d76c 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
index be73fa7..5bb62d7 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
index 996545c..df40d96 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.ReferenceImpl.FileBased.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
index 2fc2bd1..a83cae0 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
index 9d8ab58..0603504 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Registry.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
index 76b4908..23f1137 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
index 9fe3899..0fd56dd 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Client.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
index 7d5ca7d..6cb7c8b 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
index 724b21b..719baad 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Submodel.Server.Http.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
index b435bb6..7b84ad3 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
index ca1f3d8..cb72bee 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.nupkg
index d7ca908..e1a92ea 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.symbols.nupkg
index 7f5cd72..25c750c 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.Client.Mqtt.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.nupkg
index b4f76ff..8ff9e1b 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.symbols.nupkg
index a70d7a4..9aa9de5 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.1.0.0.symbols.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.nupkg
index c9501e6..36d5385 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.nupkg
Binary files differ
diff --git a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.symbols.nupkg b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.symbols.nupkg
index ad02ebc..452815b 100644
--- a/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.symbols.nupkg
+++ b/sdks/dotnet/basyx-packages/BaSyx.Utils.DependencyInjection.Abstractions.1.0.0.symbols.nupkg
Binary files differ