diff --git a/IceCreamShop/IceCreamBusinessLogic/BusinessLogics/BackUpLogic.cs b/IceCreamShop/IceCreamBusinessLogic/BusinessLogics/BackUpLogic.cs
new file mode 100644
index 0000000..7ad268c
--- /dev/null
+++ b/IceCreamShop/IceCreamBusinessLogic/BusinessLogics/BackUpLogic.cs
@@ -0,0 +1,98 @@
+using IceCreamShopContracts.BindingModels;
+using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.StoragesContracts;
+using AbstractIceCreamShopDataModels;
+using Microsoft.Extensions.Logging;
+using System.IO.Compression;
+using System.Reflection;
+using System.Runtime.Serialization.Json;
+
+namespace ConfectioneryBusinessLogic
+{
+    public class BackUpLogic : IBackUpLogic
+    {
+        private readonly ILogger _logger;
+
+        private readonly IBackUpInfo _backUpInfo;
+
+        public BackUpLogic(ILogger<BackUpLogic> logger, IBackUpInfo backUpInfo)
+        {
+            _logger = logger;
+            _backUpInfo = backUpInfo;
+        }
+
+        public void CreateBackUp(BackUpSaveBinidngModel model)
+        {
+            if (_backUpInfo == null)
+            {
+                return;
+            }
+            try
+            {
+                _logger.LogDebug("Clear folder");
+                // зачистка папки и удаление старого архива
+                var dirInfo = new DirectoryInfo(model.FolderName);
+                if (dirInfo.Exists)
+                {
+                    foreach (var file in dirInfo.GetFiles())
+                    {
+                        file.Delete();
+                    }
+                }
+                _logger.LogDebug("Delete archive");
+                string fileName = $"{model.FolderName}.zip";
+                if (File.Exists(fileName))
+                {
+                    File.Delete(fileName);
+                }
+                // берем метод для сохранения
+                _logger.LogDebug("Get assembly");
+                var typeIId = typeof(IId);
+                var assembly = typeIId.Assembly;
+                if (assembly == null)
+                {
+                    throw new ArgumentNullException("Сборка не найдена", nameof(assembly));
+                }
+                var types = assembly.GetTypes();
+                var method = GetType().GetMethod("SaveToFile", BindingFlags.NonPublic | BindingFlags.Instance);
+                _logger.LogDebug("Find {count} types", types.Length);
+                foreach (var type in types)
+                {
+                    if (type.IsInterface && type.GetInterface(typeIId.Name) != null)
+                    {
+                        var modelType = _backUpInfo.GetTypeByModelInterface(type.Name);
+                        if (modelType == null)
+                        {
+                            throw new InvalidOperationException($"Не найден класс-модель для {type.Name}");
+                        }
+                        _logger.LogDebug("Call SaveToFile method for {name} type", type.Name);
+                        // вызываем метод на выполнение
+                        method?.MakeGenericMethod(modelType).Invoke(this, new object[] { model.FolderName });
+                    }
+                }
+                _logger.LogDebug("Create zip and remove folder");
+                // архивируем
+                ZipFile.CreateFromDirectory(model.FolderName, fileName);
+                // удаляем папку
+                dirInfo.Delete(true);
+            }
+            catch (Exception)
+            {
+                throw;
+            }
+        }
+
+        private void SaveToFile<T>(string folderName) where T : class, new()
+        {
+            var records = _backUpInfo.GetList<T>();
+            if (records == null)
+            {
+                _logger.LogWarning("{type} type get null list", typeof(T).Name);
+                return;
+            }
+            var jsonFormatter = new DataContractJsonSerializer(typeof(List<T>));
+            using var fs = new FileStream(string.Format("{0}/{1}.json", folderName, typeof(T).Name), FileMode.OpenOrCreate);
+            jsonFormatter.WriteObject(fs, records);
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShop/FormComponents.cs b/IceCreamShop/IceCreamShop/FormComponents.cs
index 1187925..f47aea7 100644
--- a/IceCreamShop/IceCreamShop/FormComponents.cs
+++ b/IceCreamShop/IceCreamShop/FormComponents.cs
@@ -10,6 +10,7 @@ using System.Windows.Forms;
 using IceCreamShop;
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.DI;
 using IceCreamShopContracts.SearchModels;
 using Microsoft.Extensions.Logging;
 
@@ -48,31 +49,25 @@ namespace IceCreamShopView
 
         private void buttonAdd_Click(object sender, EventArgs e)
         {
-            var service = Program.ServiceProvider?.GetService(typeof(FormComponent));
-            if (service is FormComponent form)
-            {
-                if (form.ShowDialog() == DialogResult.OK)
-                {
-                    LoadData();
-                }
-            }
-        }
+			var form = DependencyManager.Instance.Resolve<FormComponent>();
+			if (form.ShowDialog() == DialogResult.OK)
+			{
+				LoadData();
+			}
+		}
 
         private void buttonChange_Click(object sender, EventArgs e)
         {
-            if (dataGridView.SelectedRows.Count == 1)
-            {
-                var service =
-               Program.ServiceProvider?.GetService(typeof(FormComponent));
-                if (service is FormComponent form)
-                {
-                    form.Id =
-                   Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
-                    if (form.ShowDialog() == DialogResult.OK)
-                        LoadData();
-                }
-            }
-        }
+			if (dataGridView.SelectedRows.Count == 1)
+			{
+				var form = DependencyManager.Instance.Resolve<FormComponent>();
+				form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
+				if (form.ShowDialog() == DialogResult.OK)
+				{
+					LoadData();
+				}
+			}
+		}
 
         private void buttonDelete_Click(object sender, EventArgs e)
         {
diff --git a/IceCreamShop/IceCreamShop/FormIceCream.cs b/IceCreamShop/IceCreamShop/FormIceCream.cs
index 58dee6b..99e40d5 100644
--- a/IceCreamShop/IceCreamShop/FormIceCream.cs
+++ b/IceCreamShop/IceCreamShop/FormIceCream.cs
@@ -11,6 +11,7 @@ using AbstractIceCreamShopDataModels.Models;
 using IceCreamShop;
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.DI;
 using IceCreamShopContracts.SearchModels;
 using IceCreamShopContracts.ViewModels;
 using Microsoft.Extensions.Logging;
@@ -98,51 +99,49 @@ namespace IceCreamShopView
 
         private void buttonAdd_Click(object sender, EventArgs e)
         {
-            var service = Program.ServiceProvider?.GetService(typeof(FormIceCreamComponent));
-            if (service is FormIceCreamComponent form)
-            {
-                if (form.ShowDialog() == DialogResult.OK)
-                {
-                    if (form.ComponentModel == null)
-                    {
-                        return;
-                    }
-                    _logger.LogInformation("Добавление нового компонента:{ ComponentName}- { Count}", form.ComponentModel.ComponentName, form.Count);
-                    if (_iceCreamComponents.ContainsKey(form.Id))
-                    {
-                        _iceCreamComponents[form.Id] = (form.ComponentModel, form.Count);
-                    }
-                    else
-                    {
-                        _iceCreamComponents.Add(form.Id, (form.ComponentModel, form.Count));
-                    }
-                    LoadData();
-                }
-            }
-        }
+			var form = DependencyManager.Instance.Resolve<FormIceCreamComponent>();
+			if (form.ShowDialog() == DialogResult.OK)
+			{
+				if (form.ComponentModel == null)
+				{
+					return;
+				}
+				_logger.LogInformation("Добавление нового компонента: { ComponentName}- { Count}",
+					form.ComponentModel.ComponentName, form.Count);
+				if (_iceCreamComponents.ContainsKey(form.Id))
+				{
+					_iceCreamComponents[form.Id] = (form.ComponentModel,
+					form.Count);
+				}
+				else
+				{
+					_iceCreamComponents.Add(form.Id, (form.ComponentModel,
+					form.Count));
+				}
+				LoadData();
+			}
+		}
 
         private void buttonEdit_Click(object sender, EventArgs e)
         {
             if (dataGridView.SelectedRows.Count == 1)
             {
-                var service = Program.ServiceProvider?.GetService(typeof(FormIceCreamComponent));
-                if (service is FormIceCreamComponent form)
-                {
-                    int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value);
-                    form.Id = id;
-                    form.Count = _iceCreamComponents[id].Item2;
-                    if (form.ShowDialog() == DialogResult.OK)
-                    {
-                        if (form.ComponentModel == null)
-                        {
-                            return;
-                        }
-                        _logger.LogInformation("Изменение компонента:{ ComponentName}- { Count}", form.ComponentModel.ComponentName, form.Count);
-                        _iceCreamComponents[form.Id] = (form.ComponentModel, form.Count);
-                        LoadData();
-                    }
-                }
-            }
+				var form = DependencyManager.Instance.Resolve<FormIceCreamComponent>();
+				int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value);
+				form.Id = id;
+				form.Count = _iceCreamComponents[id].Item2;
+				if (form.ShowDialog() == DialogResult.OK)
+				{
+					if (form.ComponentModel == null)
+					{
+						return;
+					}
+					_logger.LogInformation("Изменение компонента: { ComponentName} - { Count} ",
+						form.ComponentModel.ComponentName, form.Count);
+					_iceCreamComponents[id] = (form.ComponentModel, form.Count);
+					LoadData();
+				}
+			}
         }
 
         private void buttonDelete_Click(object sender, EventArgs e)
diff --git a/IceCreamShop/IceCreamShop/FormIceCreams.cs b/IceCreamShop/IceCreamShop/FormIceCreams.cs
index 869e891..242dd2b 100644
--- a/IceCreamShop/IceCreamShop/FormIceCreams.cs
+++ b/IceCreamShop/IceCreamShop/FormIceCreams.cs
@@ -10,6 +10,7 @@ using System.Windows.Forms;
 using IceCreamShop;
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.DI;
 using Microsoft.Extensions.Logging;
 
 
@@ -48,30 +49,24 @@ namespace IceCreamShopView
 
         private void buttonAdd_Click(object sender, EventArgs e)
         {
-            var service = Program.ServiceProvider?.GetService(typeof(FormIceCream));
-            if (service is FormIceCream form)
-            {
-                if (form.ShowDialog() == DialogResult.OK)
-                {
-                    LoadData();
-                }
-            }
-        }
+			var form = DependencyManager.Instance.Resolve<FormIceCream>();
+			if (form.ShowDialog() == DialogResult.OK)
+			{
+				LoadData();
+			}
+		}
 
         private void buttonEdit_Click(object sender, EventArgs e)
         {
             if (dataGridView.SelectedRows.Count == 1)
             {
-                var service = Program.ServiceProvider?.GetService(typeof(FormIceCream));
-                if (service is FormIceCream form)
-                {
-                    form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
-                    if (form.ShowDialog() == DialogResult.OK)
-                    {
-                        LoadData();
-                    }
-                }
-            }
+				var form = DependencyManager.Instance.Resolve<FormIceCream>();
+				form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
+				if (form.ShowDialog() == DialogResult.OK)
+				{
+					LoadData();
+				}
+			}
         }
 
         private void buttonDelete_Click(object sender, EventArgs e)
diff --git a/IceCreamShop/IceCreamShop/FormImplementers.cs b/IceCreamShop/IceCreamShop/FormImplementers.cs
index 4d27954..77dcb0a 100644
--- a/IceCreamShop/IceCreamShop/FormImplementers.cs
+++ b/IceCreamShop/IceCreamShop/FormImplementers.cs
@@ -1,6 +1,7 @@
 using IceCreamShop;
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.DI;
 using Microsoft.Extensions.Logging;
 
 
@@ -39,30 +40,24 @@ namespace IceCreamShopView
 
         private void ButtonAdd_Click(object sender, EventArgs e)
         {
-            var service = Program.ServiceProvider?.GetService(typeof(FormImplementer));
-            if (service is FormImplementer form)
-            {
-                if (form.ShowDialog() == DialogResult.OK)
-                {
-                    LoadData();
-                }
-            }
-        }
+			var form = DependencyManager.Instance.Resolve<FormImplementer>();
+			if (form.ShowDialog() == DialogResult.OK)
+			{
+				LoadData();
+			}
+		}
 
         private void ButtonUpd_Click(object sender, EventArgs e)
         {
             if (dataGridView.SelectedRows.Count == 1)
             {
-                var service = Program.ServiceProvider?.GetService(typeof(FormImplementer));
-                if (service is FormImplementer form)
-                {
-                    form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
-                    if (form.ShowDialog() == DialogResult.OK)
-                    {
-                        LoadData();
-                    }
-                }
-            }
+				var form = DependencyManager.Instance.Resolve<FormImplementer>();
+				form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
+				if (form.ShowDialog() == DialogResult.OK)
+				{
+					LoadData();
+				}
+			}
         }
 
         private void ButtonDel_Click(object sender, EventArgs e)
diff --git a/IceCreamShop/IceCreamShop/FormMain.Designer.cs b/IceCreamShop/IceCreamShop/FormMain.Designer.cs
index 8b20033..99c3e51 100644
--- a/IceCreamShop/IceCreamShop/FormMain.Designer.cs
+++ b/IceCreamShop/IceCreamShop/FormMain.Designer.cs
@@ -44,6 +44,7 @@
 			ordersToolStripMenuItem = new ToolStripMenuItem();
 			DoWorkToolStripMenuItem = new ToolStripMenuItem();
 			MailToolStripMenuItem = new ToolStripMenuItem();
+			createBackupToolStripMenuItem = new ToolStripMenuItem();
 			((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
 			menuStrip.SuspendLayout();
 			SuspendLayout();
@@ -95,7 +96,7 @@
 			// menuStrip
 			// 
 			menuStrip.ImageScalingSize = new Size(20, 20);
-			menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчетыToolStripMenuItem, DoWorkToolStripMenuItem, MailToolStripMenuItem });
+			menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчетыToolStripMenuItem, DoWorkToolStripMenuItem, MailToolStripMenuItem, createBackupToolStripMenuItem });
 			menuStrip.Location = new Point(0, 0);
 			menuStrip.Name = "menuStrip";
 			menuStrip.Padding = new Padding(5, 2, 0, 2);
@@ -180,6 +181,13 @@
 			MailToolStripMenuItem.Text = "Письма";
 			MailToolStripMenuItem.Click += MailToolStripMenuItem_Click;
 			// 
+			// createBackupToolStripMenuItem
+			// 
+			createBackupToolStripMenuItem.Name = "createBackupToolStripMenuItem";
+			createBackupToolStripMenuItem.Size = new Size(97, 20);
+			createBackupToolStripMenuItem.Text = "Создать бекап";
+			createBackupToolStripMenuItem.Click += createBackupToolStripMenuItem_Click;
+			// 
 			// FormMain
 			// 
 			AutoScaleDimensions = new SizeF(7F, 15F);
@@ -218,5 +226,6 @@
 		private ToolStripMenuItem ImplementersToolStripMenuItem;
 		private ToolStripMenuItem DoWorkToolStripMenuItem;
 		private ToolStripMenuItem MailToolStripMenuItem;
+		private ToolStripMenuItem createBackupToolStripMenuItem;
 	}
 }
\ No newline at end of file
diff --git a/IceCreamShop/IceCreamShop/FormMain.cs b/IceCreamShop/IceCreamShop/FormMain.cs
index 13c3116..15afee0 100644
--- a/IceCreamShop/IceCreamShop/FormMain.cs
+++ b/IceCreamShop/IceCreamShop/FormMain.cs
@@ -1,8 +1,10 @@
 using AbstractIceCreamShopDataModels.Enums;
+using ConfectioneryBusinessLogic;
 using IceCreamBusinessLogic.BusinessLogics;
 using IceCreamShop;
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.BusinessLogicsContracts;
+using IceCreamShopContracts.DI;
 using Microsoft.Extensions.Logging;
 using System;
 using System.Collections.Generic;
@@ -22,13 +24,15 @@ namespace IceCreamShopView
 		private readonly IOrderLogic _orderLogic;
 		private readonly IReportLogic _reportLogic;
 		private readonly IWorkProcess _workProcess;
-		public FormMain(ILogger<FormMain> logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess)
+        private readonly IBackUpLogic _backUpLogic;
+		public FormMain(ILogger<FormMain> logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess, IBackUpLogic backUpLogic)
 		{
 			InitializeComponent();
 			_logger = logger;
 			_orderLogic = orderLogic;
 			_reportLogic = reportLogic;
 			_workProcess = workProcess;
+            _backUpLogic = backUpLogic;
 		}
 
 		private void FormMain_Load(object sender, EventArgs e)
@@ -53,30 +57,21 @@ namespace IceCreamShopView
 
 		private void компонентыToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormComponents));
-			if (service is FormComponents form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormComponents>();
+			form.ShowDialog();
 		}
 
 		private void мороженоеToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormIceCreams));
-			if (service is FormIceCreams form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormIceCreams>();
+			form.ShowDialog();
 		}
 
 		private void buttonCreateOrder_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder));
-			if (service is FormCreateOrder form)
-			{
-				form.ShowDialog();
-				LoadData();
-			}
+			var form = DependencyManager.Instance.Resolve<FormCreateOrder>();
+			form.ShowDialog();
+			LoadData();
 		}
 
 		private void buttonSetToWork_Click(object sender, EventArgs e)
@@ -176,54 +171,65 @@ namespace IceCreamShopView
 
 		private void IceCreamComponentsToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormReportProductComponents));
-			if (service is FormReportProductComponents form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormReportProductComponents>();
+			form.ShowDialog();
 		}
 
 		private void OrdersToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders));
-			if (service is FormReportOrders form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormReportOrders>();
+			form.ShowDialog();
 		}
 
 		private void клиентыToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormClients));
-			if (service is FormClients form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormClients>();
+			form.ShowDialog();
 		}
 
 		private void ImplementersToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormImplementers));
-			if (service is FormImplementers form)
-			{
-				form.ShowDialog();
-			}
+			var form = DependencyManager.Instance.Resolve<FormImplementers>();
+			form.ShowDialog();
 		}
 
 		private void DoWorkToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			_workProcess.DoWork((
-				Program.ServiceProvider?.GetService(typeof(IImplementerLogic)) as IImplementerLogic)!, _orderLogic);
+			_workProcess.DoWork(
+				DependencyManager.Instance.Resolve<IImplementerLogic>(),
+				_orderLogic);
 			MessageBox.Show("Процесс обработки запущен", "Сообщение",
 			MessageBoxButtons.OK, MessageBoxIcon.Information);
 		}
 
 		private void MailToolStripMenuItem_Click(object sender, EventArgs e)
 		{
-			var service = Program.ServiceProvider?.GetService(typeof(FormViewMail));
-			if (service is FormViewMail form)
+			var form = DependencyManager.Instance.Resolve<FormViewMail>();
+			form.ShowDialog();
+		}
+
+		private void createBackupToolStripMenuItem_Click(object sender, EventArgs e)
+		{
+			try
 			{
-				form.ShowDialog();
+				if (_backUpLogic != null)
+				{
+					var fbd = new FolderBrowserDialog();
+					if (fbd.ShowDialog() == DialogResult.OK)
+					{
+						_backUpLogic.CreateBackUp(new BackUpSaveBinidngModel
+						{
+							FolderName = fbd.SelectedPath
+						});
+						MessageBox.Show("Бекап создан", "Сообщение",
+						MessageBoxButtons.OK, MessageBoxIcon.Information);
+					}
+				}
+			}
+			catch (Exception ex)
+			{
+				MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+				MessageBoxIcon.Error);
 			}
 		}
 	}
diff --git a/IceCreamShop/IceCreamShop/Program.cs b/IceCreamShop/IceCreamShop/Program.cs
index 9383722..16bc257 100644
--- a/IceCreamShop/IceCreamShop/Program.cs
+++ b/IceCreamShop/IceCreamShop/Program.cs
@@ -1,8 +1,6 @@
 using IceCreamShopContracts.BusinessLogicsContracts;
-using IceCreamShopContracts.StoragesContracts;
 using IceCreamBusinessLogic.BusinessLogics;
 using IceCreamShopView;
-using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using NLog.Extensions.Logging;
 using IceCreamBusinessLogic.OfficePackage.Implements;
@@ -11,13 +9,12 @@ using IceCreamShopDatabaseImplement.Implements;
 using IceCreamBusinessLogic.BusinessLogic;
 using IceCreamBusinessLogic.MailWorker;
 using IceCreamShopContracts.BindingModels;
+using IceCreamShopContracts.DI;
 
 namespace IceCreamShop
 {
     internal static class Program
     {
-        private static ServiceProvider? _serviceProvider;
-        public static ServiceProvider? ServiceProvider => _serviceProvider;
         /// <summary>
         ///  The main entry point for the application.
         /// </summary>
@@ -27,14 +24,12 @@ namespace IceCreamShop
             // To customize application configuration such as set high DPI settings or default font,
             // see https://aka.ms/applicationconfiguration.
             ApplicationConfiguration.Initialize();
-            var services = new ServiceCollection();
-            ConfigureServices(services);
-            _serviceProvider = services.BuildServiceProvider();
+			InitDependency();
 
-            try
+			try
             {
-                var mailSender = _serviceProvider.GetService<AbstractMailWorker>();
-                mailSender?.MailConfig(new MailConfigBindingModel
+				var mailSender = DependencyManager.Instance.Resolve<AbstractMailWorker>();
+				mailSender?.MailConfig(new MailConfigBindingModel
                 {
                     MailLogin = System.Configuration.ConfigurationManager.AppSettings["MailLogin"] ?? string.Empty,
                     MailPassword = System.Configuration.ConfigurationManager.AppSettings["MailPassword"] ?? string.Empty,
@@ -47,58 +42,54 @@ namespace IceCreamShop
                 // ������� ������
                 var timer = new System.Threading.Timer(new TimerCallback(MailCheck!), null, 0, 100000);
             }
-            catch (Exception ex)
-            {
-                var logger = _serviceProvider.GetService<ILogger>();
-                logger?.LogError(ex, "������ ������ � ������");
-            }
+			catch (Exception ex)
+			{
+				var logger = DependencyManager.Instance.Resolve<ILogger>();
+				logger?.LogError(ex, "������ ������ � ������");
+			}
 
-            Application.Run(_serviceProvider.GetRequiredService<FormMain>());
-        }
-
-        private static void ConfigureServices(ServiceCollection services)
-        {
-            services.AddLogging(option =>
-            {
-                option.SetMinimumLevel(LogLevel.Information);
-                option.AddNLog("nlog.config");
-            });
-            services.AddTransient<IComponentStorage, ComponentStorage>();
-            services.AddTransient<IOrderStorage, OrderStorage>();
-			services.AddTransient<IImplementerStorage, ImplementerStorage>();
-            services.AddTransient<IIceCreamStorage, IceCreamStorage>();
-            services.AddTransient<IClientStorage, ClientStorage>();
-            services.AddTransient<IMessageInfoStorage, MessageInfoStorage>();
-
-            services.AddTransient<IClientLogic, ClientLogic>();
-			services.AddTransient<IImplementerLogic, ImplementerLogic>();
-            services.AddTransient<IComponentLogic, ComponentLogic>();
-            services.AddTransient<IOrderLogic, OrderLogic>();
-            services.AddTransient<IIceCreamLogic, IceCreamLogic>();
-            services.AddTransient<IReportLogic, ReportLogic>();
-            services.AddTransient<IWorkProcess, WorkModeling>();
-            services.AddTransient<IMessageInfoLogic, MessageInfoLogic>();
-
-            services.AddSingleton<AbstractMailWorker, MailKitWorker>();
-
-            services.AddTransient<AbstractSaveToExcel, SaveToExcel>();
-            services.AddTransient<AbstractSaveToWord, SaveToWord>();
-            services.AddTransient<AbstractSaveToPdf, SaveToPdf>();
-
-            services.AddTransient<FormMain>();
-			services.AddTransient<FormImplementer>();
-			services.AddTransient<FormImplementers>();
-            services.AddTransient<FormClients>();
-            services.AddTransient<FormComponent>();
-            services.AddTransient<FormComponents>();
-            services.AddTransient<FormCreateOrder>();
-            services.AddTransient<FormIceCream>();
-            services.AddTransient<FormIceCreamComponent>();
-            services.AddTransient<FormIceCreams>();
-            services.AddTransient<FormReportProductComponents>();
-            services.AddTransient<FormReportOrders>();
-			services.AddTransient<FormViewMail>();
+			Application.Run(DependencyManager.Instance.Resolve<FormMain>());
 		}
-		private static void MailCheck(object obj) => ServiceProvider?.GetService<AbstractMailWorker>()?.MailCheck();
-    }
+
+        private static void InitDependency()
+        {
+			DependencyManager.InitDependency();
+
+			DependencyManager.Instance.AddLogging(option =>
+			{
+				option.SetMinimumLevel(LogLevel.Information);
+				option.AddNLog("nlog.config");
+			}); 
+
+			DependencyManager.Instance.RegisterType<IClientLogic, ClientLogic>();
+			DependencyManager.Instance.RegisterType<IImplementerLogic, ImplementerLogic>();
+			DependencyManager.Instance.RegisterType<IComponentLogic, ComponentLogic>();
+			DependencyManager.Instance.RegisterType<IOrderLogic, OrderLogic>();
+			DependencyManager.Instance.RegisterType<IIceCreamLogic, IceCreamLogic>();
+			DependencyManager.Instance.RegisterType<IReportLogic, ReportLogic>();
+			DependencyManager.Instance.RegisterType<IWorkProcess, WorkModeling>();
+			DependencyManager.Instance.RegisterType<IMessageInfoLogic, MessageInfoLogic>();
+
+			DependencyManager.Instance.RegisterType<AbstractMailWorker, MailKitWorker>();
+
+			DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
+			DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
+			DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
+
+			DependencyManager.Instance.RegisterType<FormMain>();
+			DependencyManager.Instance.RegisterType<FormImplementer>();
+			DependencyManager.Instance.RegisterType<FormImplementers>();
+			DependencyManager.Instance.RegisterType<FormClients>();
+			DependencyManager.Instance.RegisterType<FormComponent>();
+			DependencyManager.Instance.RegisterType<FormComponents>();
+			DependencyManager.Instance.RegisterType<FormCreateOrder>();
+			DependencyManager.Instance.RegisterType<FormIceCream>();
+			DependencyManager.Instance.RegisterType<FormIceCreamComponent>();
+			DependencyManager.Instance.RegisterType<FormIceCreams>();
+			DependencyManager.Instance.RegisterType<FormReportProductComponents>();
+			DependencyManager.Instance.RegisterType<FormReportOrders>();
+			DependencyManager.Instance.RegisterType<FormViewMail>();
+		}
+		private static void MailCheck(object obj) => DependencyManager.Instance.Resolve<AbstractMailWorker>()?.MailCheck();
+	}
 }
\ No newline at end of file
diff --git a/IceCreamShop/IceCreamShopContracts/BindingModels/BackUpSaveBinidngModel.cs b/IceCreamShop/IceCreamShopContracts/BindingModels/BackUpSaveBinidngModel.cs
new file mode 100644
index 0000000..bb8d08e
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/BindingModels/BackUpSaveBinidngModel.cs
@@ -0,0 +1,7 @@
+namespace IceCreamShopContracts.BindingModels
+{
+    public class BackUpSaveBinidngModel
+    {
+        public string FolderName { get; set; } = string.Empty;
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/BindingModels/MessageInfoBindingModel.cs b/IceCreamShop/IceCreamShopContracts/BindingModels/MessageInfoBindingModel.cs
index 7bab4ca..1583bd9 100644
--- a/IceCreamShop/IceCreamShopContracts/BindingModels/MessageInfoBindingModel.cs
+++ b/IceCreamShop/IceCreamShopContracts/BindingModels/MessageInfoBindingModel.cs
@@ -15,5 +15,7 @@ namespace IceCreamShopContracts.BindingModels
         public string Body { get; set; } = string.Empty;
 
         public DateTime DateDelivery { get; set; }
-    }
+
+		public int Id => throw new NotImplementedException();
+	}
 }
\ No newline at end of file
diff --git a/IceCreamShop/IceCreamShopContracts/BusinessLogicsContracts/IBackUpLogic.cs b/IceCreamShop/IceCreamShopContracts/BusinessLogicsContracts/IBackUpLogic.cs
new file mode 100644
index 0000000..3112267
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/BusinessLogicsContracts/IBackUpLogic.cs
@@ -0,0 +1,9 @@
+using IceCreamShopContracts.BindingModels;
+
+namespace IceCreamShopContracts.BusinessLogicsContracts
+{
+    public interface IBackUpLogic
+    {
+        void CreateBackUp(BackUpSaveBinidngModel model);
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/DependencyManager.cs b/IceCreamShop/IceCreamShopContracts/DI/DependencyManager.cs
new file mode 100644
index 0000000..93cda26
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/DependencyManager.cs
@@ -0,0 +1,61 @@
+using Microsoft.Extensions.Logging;
+
+namespace IceCreamShopContracts.DI
+{
+    public class DependencyManager
+    {
+        private readonly IDependencyContainer _dependencyManager;
+
+        private static DependencyManager? _manager;
+
+        private static readonly object _locjObject = new();
+
+        private DependencyManager()
+        {
+            _dependencyManager = new ServiceDependencyContainer();
+        }
+
+        public static DependencyManager Instance { get { if (_manager == null) { lock (_locjObject) { _manager = new DependencyManager(); } } return _manager; } }
+
+        /// <summary>
+        /// Иницализация библиотек, в которых идут установки зависомстей
+        /// </summary>
+        public static void InitDependency()
+        {
+            var ext = ServiceProviderLoader.GetImplementationExtensions();
+            if (ext == null)
+            {
+                throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям");
+            }
+            // регистрируем зависимости
+            ext.RegisterServices();
+        }
+
+        /// <summary>
+        /// Регистрация логгера
+        /// </summary>
+        /// <param name="configure"></param>
+        public void AddLogging(Action<ILoggingBuilder> configure) => _dependencyManager.AddLogging(configure);
+
+        /// <summary>
+        /// Добавление зависимости
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="U"></typeparam>
+        public void RegisterType<T, U>(bool isSingle = false) where U : class, T where T : class => _dependencyManager.RegisterType<T, U>(isSingle);
+
+        /// <summary>
+        /// Добавление зависимости
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="U"></typeparam>
+        public void RegisterType<T>(bool isSingle = false) where T : class => _dependencyManager.RegisterType<T>(isSingle);
+
+        /// <summary>
+        /// Получение класса со всеми зависмостями
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public T Resolve<T>() => _dependencyManager.Resolve<T>();
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/IDependencyContainer.cs b/IceCreamShop/IceCreamShopContracts/DI/IDependencyContainer.cs
new file mode 100644
index 0000000..8bcedb8
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/IDependencyContainer.cs
@@ -0,0 +1,35 @@
+using Microsoft.Extensions.Logging;
+
+namespace IceCreamShopContracts.DI
+{
+    public interface IDependencyContainer
+    {
+        /// <summary>
+        /// Регистрация логгера
+        /// </summary>
+        /// <param name="configure"></param>
+        void AddLogging(Action<ILoggingBuilder> configure);
+
+        /// <summary>
+        /// Добавление зависимости
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="U"></typeparam>
+        /// <param name="isSingle"></param>
+        void RegisterType<T, U>(bool isSingle) where U : class, T where T : class;
+
+        /// <summary>
+        /// Добавление зависимости
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="isSingle"></param>
+        void RegisterType<T>(bool isSingle) where T : class;
+
+        /// <summary>
+        /// Получение класса со всеми зависмостями
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        T Resolve<T>();
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/IImplementationExtension.cs b/IceCreamShop/IceCreamShopContracts/DI/IImplementationExtension.cs
new file mode 100644
index 0000000..2ce94d6
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/IImplementationExtension.cs
@@ -0,0 +1,11 @@
+namespace IceCreamShopContracts.DI
+{
+    public interface IImplementationExtension
+    {
+        public int Priority { get; }
+        /// <summary>
+        /// Регистрация сервисов
+        /// </summary>
+        public void RegisterServices();
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/ServiceDependencyContainer.cs b/IceCreamShop/IceCreamShopContracts/DI/ServiceDependencyContainer.cs
new file mode 100644
index 0000000..a1b760d
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/ServiceDependencyContainer.cs
@@ -0,0 +1,57 @@
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+
+namespace IceCreamShopContracts.DI
+{
+    public class ServiceDependencyContainer : IDependencyContainer
+    {
+        private ServiceProvider? _serviceProvider;
+
+        private readonly ServiceCollection _serviceCollection;
+
+        public ServiceDependencyContainer()
+        {
+            _serviceCollection = new ServiceCollection();
+        }
+
+        public void AddLogging(Action<ILoggingBuilder> configure)
+        {
+            _serviceCollection.AddLogging(configure);
+        }
+
+        public void RegisterType<T, U>(bool isSingle) where U : class, T where T : class
+        {
+            if (isSingle)
+            {
+                _serviceCollection.AddSingleton<T, U>();
+            }
+            else
+            {
+                _serviceCollection.AddTransient<T, U>();
+            }
+            _serviceProvider = null;
+        }
+
+        public void RegisterType<T>(bool isSingle) where T : class
+        {
+            if (isSingle)
+            {
+                _serviceCollection.AddSingleton<T>();
+            }
+            else
+            {
+                _serviceCollection.AddTransient<T>();
+            }
+            _serviceProvider = null;
+        }
+
+        public T Resolve<T>()
+        {
+            if (_serviceProvider == null)
+            {
+                _serviceProvider = _serviceCollection.BuildServiceProvider();
+            }
+            return _serviceProvider.GetService<T>()!;
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/ServiceProviderLoader.cs b/IceCreamShop/IceCreamShopContracts/DI/ServiceProviderLoader.cs
new file mode 100644
index 0000000..7348816
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/ServiceProviderLoader.cs
@@ -0,0 +1,50 @@
+using System.Reflection;
+
+namespace IceCreamShopContracts.DI
+{
+    public class ServiceProviderLoader
+    {
+        /// <summary>
+        /// Загрузка всех классов-реализаций IImplementationExtension
+        /// </summary>
+        /// <returns></returns>
+        public static IImplementationExtension? GetImplementationExtensions()
+        {
+            IImplementationExtension? source = null;
+            var files = Directory.GetFiles(TryGetImplementationExtensionsFolder(), "*.dll", SearchOption.AllDirectories);
+            foreach (var file in files.Distinct())
+            {
+                Assembly asm = Assembly.LoadFrom(file);
+                foreach (var t in asm.GetExportedTypes())
+                {
+                    if (t.IsClass && typeof(IImplementationExtension).IsAssignableFrom(t))
+                    {
+                        if (source == null)
+                        {
+                            source = (IImplementationExtension)Activator.CreateInstance(t)!;
+                        }
+                        else
+                        {
+                            var newSource = (IImplementationExtension)Activator.CreateInstance(t)!;
+                            if (newSource.Priority > source.Priority)
+                            {
+                                source = newSource;
+                            }
+                        }
+                    }
+                }
+            }
+            return source;
+        }
+
+        private static string TryGetImplementationExtensionsFolder()
+        {
+            var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
+            while (directory != null && !directory.GetDirectories("ImplementationExtensions", SearchOption.AllDirectories).Any(x => x.Name == "ImplementationExtensions"))
+            {
+                directory = directory.Parent;
+            }
+            return $"{directory?.FullName}\\ImplementationExtensions";
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/DI/UnityDependencyContainer.cs b/IceCreamShop/IceCreamShopContracts/DI/UnityDependencyContainer.cs
new file mode 100644
index 0000000..bfcd38f
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/DI/UnityDependencyContainer.cs
@@ -0,0 +1,38 @@
+using Microsoft.Extensions.Logging;
+using Unity;
+using Unity.Microsoft.Logging;
+
+namespace IceCreamShopContracts.DI
+{
+    public class UnityDependencyContainer : IDependencyContainer
+    {
+        private readonly IUnityContainer _container;
+
+        public UnityDependencyContainer()
+        {
+            _container = new UnityContainer();
+        }
+
+        public void AddLogging(Action<ILoggingBuilder> configure)
+        {
+            var factory = LoggerFactory.Create(configure);
+            _container.AddExtension(new LoggingExtension(factory));
+        }
+
+        public void RegisterType<T>(bool isSingle) where T : class
+        {
+            _container.RegisterType<T>(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient);
+
+        }
+
+        public T Resolve<T>()
+        {
+           return _container.Resolve<T>();
+        }
+
+        void IDependencyContainer.RegisterType<T, U>(bool isSingle)
+        {
+            _container.RegisterType<T, U>(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient);
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/IceCreamShopContracts.csproj b/IceCreamShop/IceCreamShopContracts/IceCreamShopContracts.csproj
index 981e7c0..f8071fb 100644
--- a/IceCreamShop/IceCreamShopContracts/IceCreamShopContracts.csproj
+++ b/IceCreamShop/IceCreamShopContracts/IceCreamShopContracts.csproj
@@ -9,6 +9,8 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
     <PackageReference Include="NLog.Extensions.Logging" Version="5.2.1" />
+    <PackageReference Include="Unity" Version="5.11.10" />
+    <PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/IceCreamShop/IceCreamShopContracts/StoragesContracts/IBackUpInfo.cs b/IceCreamShop/IceCreamShopContracts/StoragesContracts/IBackUpInfo.cs
new file mode 100644
index 0000000..bafd27b
--- /dev/null
+++ b/IceCreamShop/IceCreamShopContracts/StoragesContracts/IBackUpInfo.cs
@@ -0,0 +1,8 @@
+namespace IceCreamShopContracts.StoragesContracts
+{
+    public interface IBackUpInfo
+    {
+        List<T>? GetList<T>() where T : class, new();
+        Type? GetTypeByModelInterface(string modelInterfaceName);
+    }
+}
diff --git a/IceCreamShop/IceCreamShopContracts/ViewModels/MessageInfoViewModel.cs b/IceCreamShop/IceCreamShopContracts/ViewModels/MessageInfoViewModel.cs
index 627d1d0..0db37eb 100644
--- a/IceCreamShop/IceCreamShopContracts/ViewModels/MessageInfoViewModel.cs
+++ b/IceCreamShop/IceCreamShopContracts/ViewModels/MessageInfoViewModel.cs
@@ -1,6 +1,5 @@
 using AbstractIceCreamShopDataModels.Models;
 using IceCreamShopContracts.Attributes;
-using System.ComponentModel;
 
 namespace IceCreamShopContracts.ViewModels
 {
@@ -25,5 +24,6 @@ namespace IceCreamShopContracts.ViewModels
 		public string Body { get; set; } = string.Empty;
 
 		[Column(visible: false)]
+		public int Id => throw new NotImplementedException();
 	}
 }
\ No newline at end of file
diff --git a/IceCreamShop/IceCreamShopDataModels/Models/IMessageInfoModel.cs b/IceCreamShop/IceCreamShopDataModels/Models/IMessageInfoModel.cs
index ac4fccb..0a7f17c 100644
--- a/IceCreamShop/IceCreamShopDataModels/Models/IMessageInfoModel.cs
+++ b/IceCreamShop/IceCreamShopDataModels/Models/IMessageInfoModel.cs
@@ -1,6 +1,6 @@
 namespace AbstractIceCreamShopDataModels.Models
 {
-    public interface IMessageInfoModel
+    public interface IMessageInfoModel : IId
     {
         string MessageId { get; }
         int? ClientId { get; }
diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Implements/BackUpInfo.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Implements/BackUpInfo.cs
new file mode 100644
index 0000000..1e2c4e7
--- /dev/null
+++ b/IceCreamShop/IceCreamShopDatabaseImplement/Implements/BackUpInfo.cs
@@ -0,0 +1,26 @@
+using IceCreamShopContracts.StoragesContracts;
+
+namespace IceCreamShopDatabaseImplement.Implements
+{
+    public class BackUpInfo : IBackUpInfo
+    {
+        public List<T>? GetList<T>() where T : class, new()
+        {
+            using var context = new IceCreamShopDatabase();
+            return context.Set<T>().ToList();
+        }
+        public Type? GetTypeByModelInterface(string modelInterfaceName)
+        {
+            var assembly = typeof(BackUpInfo).Assembly;
+            var types = assembly.GetTypes();
+            foreach (var type in types)
+            {
+                if (type.IsClass && type.GetInterface(modelInterfaceName) != null)
+                {
+                    return type;
+                }
+            }
+            return null;
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShopDatabaseImplement/Models/MessageInfo.cs b/IceCreamShop/IceCreamShopDatabaseImplement/Models/MessageInfo.cs
index 9c6b65b..6e95abf 100644
--- a/IceCreamShop/IceCreamShopDatabaseImplement/Models/MessageInfo.cs
+++ b/IceCreamShop/IceCreamShopDatabaseImplement/Models/MessageInfo.cs
@@ -48,5 +48,7 @@ namespace IceCreamShopDatabaseImplement.Models
             SenderName = SenderName,
             DateDelivery = DateDelivery,
         };
-    }
+
+		public int Id => throw new NotImplementedException();
+	}
 }
diff --git a/IceCreamShop/IceCreamShopFileImplement/Models/MessageInfo.cs b/IceCreamShop/IceCreamShopFileImplement/Models/MessageInfo.cs
index aa31ba3..244d052 100644
--- a/IceCreamShop/IceCreamShopFileImplement/Models/MessageInfo.cs
+++ b/IceCreamShop/IceCreamShopFileImplement/Models/MessageInfo.cs
@@ -71,5 +71,7 @@ namespace IceCreamShopFileImplement.Models
             new XAttribute("SenderName", SenderName),
             new XAttribute("DateDelivery", DateDelivery)
             );
-    }
+
+		public int Id => throw new NotImplementedException();
+	}
 }
diff --git a/IceCreamShop/IceCreamShopListImplement/IceCreamShopListImplement.csproj b/IceCreamShop/IceCreamShopListImplement/IceCreamShopListImplement.csproj
index b6d75cd..79e43c9 100644
--- a/IceCreamShop/IceCreamShopListImplement/IceCreamShopListImplement.csproj
+++ b/IceCreamShop/IceCreamShopListImplement/IceCreamShopListImplement.csproj
@@ -15,4 +15,8 @@
     <ProjectReference Include="..\IceCreamShopDataModels\IceCreamShopDataModels.csproj" />
   </ItemGroup>
 
+  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
+    <Exec Command="copy /Y &quot;$(TargetDir)*.dll&quot; &quot;$(SolutionDir)ImplementationExtensions\*.dll&quot;" />
+  </Target>
+
 </Project>
diff --git a/IceCreamShop/IceCreamShopListImplement/Implements/BackUpInfo.cs b/IceCreamShop/IceCreamShopListImplement/Implements/BackUpInfo.cs
new file mode 100644
index 0000000..6693a95
--- /dev/null
+++ b/IceCreamShop/IceCreamShopListImplement/Implements/BackUpInfo.cs
@@ -0,0 +1,17 @@
+using IceCreamShopContracts.StoragesContracts;
+
+namespace IceCreamShopListImplement.Implements
+{
+    public class BackUpInfo : IBackUpInfo
+    {
+        public List<T>? GetList<T>() where T : class, new()
+        {
+            throw new NotImplementedException();
+        }
+
+        public Type? GetTypeByModelInterface(string modelInterfaceName)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
diff --git a/IceCreamShop/IceCreamShopListImplement/Implements/MessageInfoStorage.cs b/IceCreamShop/IceCreamShopListImplement/Implements/MessageInfoStorage.cs
index 3917486..d7c319b 100644
--- a/IceCreamShop/IceCreamShopListImplement/Implements/MessageInfoStorage.cs
+++ b/IceCreamShop/IceCreamShopListImplement/Implements/MessageInfoStorage.cs
@@ -1,12 +1,13 @@
 using IceCreamShopContracts.BindingModels;
 using IceCreamShopContracts.SearchModels;
 using IceCreamShopContracts.ViewModels;
+using IceCreamShopContracts.StoragesContracts;
 using IceCreamShopListImplement.Models;
 
 namespace IceCreamShopListImplement.Implements
 {
-    public class MessageInfoStorage
-    {
+    public class MessageInfoStorage : IMessageInfoStorage
+	{
         private readonly DataListSingleton _source;
         public MessageInfoStorage()
         {
diff --git a/IceCreamShop/IceCreamShopListImplement/ListImplementationExtension.cs b/IceCreamShop/IceCreamShopListImplement/ListImplementationExtension.cs
new file mode 100644
index 0000000..a81df9a
--- /dev/null
+++ b/IceCreamShop/IceCreamShopListImplement/ListImplementationExtension.cs
@@ -0,0 +1,23 @@
+using IceCreamShopContracts.DI;
+using IceCreamShopContracts.StoragesContracts;
+using IceCreamShopListImplement.Implements;
+
+namespace IceCreamShopListImplement
+{
+    public class ListImplementationExtension : IImplementationExtension
+    {
+        public int Priority => 0;
+
+        public void RegisterServices()
+        {
+            DependencyManager.Instance.RegisterType<IClientStorage, ClientStorage>();
+            DependencyManager.Instance.RegisterType<IComponentStorage, ComponentStorage>();
+            DependencyManager.Instance.RegisterType<IImplementerStorage, ImplementerStorage>();
+			DependencyManager.Instance.RegisterType<IMessageInfoStorage, MessageInfoStorage>();
+            DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
+            DependencyManager.Instance.RegisterType<IIceCreamStorage, IceCreamStorage>();
+            DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
+        }
+
+    }
+}
diff --git a/IceCreamShop/IceCreamShopListImplement/Models/MessageInfo.cs b/IceCreamShop/IceCreamShopListImplement/Models/MessageInfo.cs
index 240ac3e..b8dc980 100644
--- a/IceCreamShop/IceCreamShopListImplement/Models/MessageInfo.cs
+++ b/IceCreamShop/IceCreamShopListImplement/Models/MessageInfo.cs
@@ -45,5 +45,6 @@ namespace IceCreamShopListImplement.Models
             DateDelivery = DateDelivery,
         };
 
-    }
+		public int Id => throw new NotImplementedException();
+	}
 }
diff --git a/IceCreamShop/ImplementationExtensions/IceCreamShopContracts.dll b/IceCreamShop/ImplementationExtensions/IceCreamShopContracts.dll
new file mode 100644
index 0000000..5e2b943
Binary files /dev/null and b/IceCreamShop/ImplementationExtensions/IceCreamShopContracts.dll differ
diff --git a/IceCreamShop/ImplementationExtensions/IceCreamShopDataModels.dll b/IceCreamShop/ImplementationExtensions/IceCreamShopDataModels.dll
new file mode 100644
index 0000000..749fa90
Binary files /dev/null and b/IceCreamShop/ImplementationExtensions/IceCreamShopDataModels.dll differ
diff --git a/IceCreamShop/ImplementationExtensions/IceCreamShopListImplement.dll b/IceCreamShop/ImplementationExtensions/IceCreamShopListImplement.dll
new file mode 100644
index 0000000..8db3c16
Binary files /dev/null and b/IceCreamShop/ImplementationExtensions/IceCreamShopListImplement.dll differ