diff --git a/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/CollectionType.cs b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/CollectionType.cs
new file mode 100644
index 0000000..a500b27
--- /dev/null
+++ b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/CollectionType.cs
@@ -0,0 +1,22 @@
+namespace ProjectSportCar.CollectionGenericObjects;
+
+/// <summary>
+/// Тип коллекции
+/// </summary>
+public enum CollectionType
+{
+	/// <summary>
+	/// Неопределено
+	/// </summary>
+	None = 0,
+
+	/// <summary>
+	/// Массив
+	/// </summary>
+	Massive = 1,
+
+	/// <summary>
+	/// Список
+	/// </summary>
+	List = 2
+}
\ No newline at end of file
diff --git a/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/ListGenericObjects.cs b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/ListGenericObjects.cs
new file mode 100644
index 0000000..e6c0b2c
--- /dev/null
+++ b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/ListGenericObjects.cs
@@ -0,0 +1,59 @@
+namespace ProjectSportCar.CollectionGenericObjects;
+
+/// <summary>
+/// Параметризованный набор объектов
+/// </summary>
+/// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam>
+public class ListGenericObjects<T> : ICollectionGenericObjects<T>
+	where T : class
+{
+	/// <summary>
+	/// Список объектов, которые храним
+	/// </summary>
+	private readonly List<T?> _collection;
+
+	/// <summary>
+	/// Максимально допустимое число объектов в списке
+	/// </summary>
+	private int _maxCount;
+
+	public int Count => _collection.Count;
+
+	public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } }
+
+	/// <summary>
+	/// Конструктор
+	/// </summary>
+	public ListGenericObjects()
+	{
+		_collection = new();
+	}
+
+	public T? Get(int position)
+	{
+		// TODO проверка позиции
+		return _collection[position];
+	}
+
+	public bool Insert(T obj)
+	{
+		// TODO проверка, что не превышено максимальное количество элементов
+		// TODO вставка в конец набора
+		return true;
+	}
+
+	public bool Insert(T obj, int position)
+	{
+		// TODO проверка, что не превышено максимальное количество элементов
+		// TODO проверка позиции
+		// TODO вставка по позиции
+		return true;
+	}
+
+	public bool Remove(int position)
+	{
+		// TODO проверка позиции
+		// TODO удаление объекта из списка
+		return true;
+	}
+}
\ No newline at end of file
diff --git a/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/StorageCollection.cs b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/StorageCollection.cs
new file mode 100644
index 0000000..8d7c8d2
--- /dev/null
+++ b/ProjectSportCar/ProjectSportCar/CollectionGenericObjects/StorageCollection.cs
@@ -0,0 +1,61 @@
+namespace ProjectSportCar.CollectionGenericObjects;
+
+/// <summary>
+/// Класс-хранилище коллекций
+/// </summary>
+/// <typeparam name="T"></typeparam>
+public class StorageCollection<T>
+	where T : class
+{
+	/// <summary>
+	/// Словарь (хранилище) с коллекциями
+	/// </summary>
+	readonly Dictionary<string, ICollectionGenericObjects<T>> _storages;
+
+	/// <summary>
+	/// Возвращение списка названий коллекций
+	/// </summary>
+	public List<string> Keys => _storages.Keys.ToList();
+
+	/// <summary>
+	/// Конструктор
+	/// </summary>
+	public StorageCollection()
+	{
+		_storages = new Dictionary<string, ICollectionGenericObjects<T>>();
+	}
+
+	/// <summary>
+	/// Добавление коллекции в хранилище
+	/// </summary>
+	/// <param name="name">Название коллекции</param>
+	/// <param name="collectionType">тип коллекции</param>
+	public void AddCollection(string name, CollectionType collectionType)
+	{
+		// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
+		// TODO Прописать логику для добавления
+	}
+
+	/// <summary>
+	/// Удаление коллекции
+	/// </summary>
+	/// <param name="name">Название коллекции</param>
+	public void DelCollection(string name)
+	{
+		// TODO Прописать логику для удаления коллекции
+	}
+
+	/// <summary>
+	/// Доступ к коллекции
+	/// </summary>
+	/// <param name="name">Название коллекции</param>
+	/// <returns></returns>
+	public ICollectionGenericObjects<T>? this[string name]
+	{
+		get
+		{
+			// TODO Продумать логику получения объекта
+			return null;
+		}
+	}
+}
\ No newline at end of file
diff --git a/ProjectSportCar/ProjectSportCar/FormCarCollection.Designer.cs b/ProjectSportCar/ProjectSportCar/FormCarCollection.Designer.cs
index 97f663c..436c28c 100644
--- a/ProjectSportCar/ProjectSportCar/FormCarCollection.Designer.cs
+++ b/ProjectSportCar/ProjectSportCar/FormCarCollection.Designer.cs
@@ -29,6 +29,15 @@
 		private void InitializeComponent()
 		{
 			groupBoxTools = new GroupBox();
+			buttonCreateCompany = new Button();
+			panelStorage = new Panel();
+			buttonCollectionDel = new Button();
+			listBoxCollection = new ListBox();
+			buttonCollectionAdd = new Button();
+			radioButtonList = new RadioButton();
+			radioButtonMassive = new RadioButton();
+			textBoxCollectionName = new TextBox();
+			labelCollectionName = new Label();
 			buttonRefresh = new Button();
 			buttonGoToCheck = new Button();
 			buttonRemoveCar = new Button();
@@ -37,18 +46,18 @@
 			buttonAddCar = new Button();
 			comboBoxSelectorCompany = new ComboBox();
 			pictureBox = new PictureBox();
+			panelCompanyTools = new Panel();
 			groupBoxTools.SuspendLayout();
+			panelStorage.SuspendLayout();
 			((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
+			panelCompanyTools.SuspendLayout();
 			SuspendLayout();
 			// 
 			// groupBoxTools
 			// 
-			groupBoxTools.Controls.Add(buttonRefresh);
-			groupBoxTools.Controls.Add(buttonGoToCheck);
-			groupBoxTools.Controls.Add(buttonRemoveCar);
-			groupBoxTools.Controls.Add(maskedTextBoxPosition);
-			groupBoxTools.Controls.Add(buttonAddSportCar);
-			groupBoxTools.Controls.Add(buttonAddCar);
+			groupBoxTools.Controls.Add(panelCompanyTools);
+			groupBoxTools.Controls.Add(buttonCreateCompany);
+			groupBoxTools.Controls.Add(panelStorage);
 			groupBoxTools.Controls.Add(comboBoxSelectorCompany);
 			groupBoxTools.Dock = DockStyle.Right;
 			groupBoxTools.Location = new Point(783, 0);
@@ -58,10 +67,102 @@
 			groupBoxTools.TabStop = false;
 			groupBoxTools.Text = "Инструменты";
 			// 
+			// buttonCreateCompany
+			// 
+			buttonCreateCompany.Location = new Point(6, 320);
+			buttonCreateCompany.Name = "buttonCreateCompany";
+			buttonCreateCompany.Size = new Size(167, 23);
+			buttonCreateCompany.TabIndex = 8;
+			buttonCreateCompany.Text = "Создать компанию";
+			buttonCreateCompany.UseVisualStyleBackColor = true;
+			buttonCreateCompany.Click += ButtonCreateCompany_Click;
+			// 
+			// panelStorage
+			// 
+			panelStorage.Controls.Add(buttonCollectionDel);
+			panelStorage.Controls.Add(listBoxCollection);
+			panelStorage.Controls.Add(buttonCollectionAdd);
+			panelStorage.Controls.Add(radioButtonList);
+			panelStorage.Controls.Add(radioButtonMassive);
+			panelStorage.Controls.Add(textBoxCollectionName);
+			panelStorage.Controls.Add(labelCollectionName);
+			panelStorage.Dock = DockStyle.Top;
+			panelStorage.Location = new Point(3, 19);
+			panelStorage.Name = "panelStorage";
+			panelStorage.Size = new Size(173, 266);
+			panelStorage.TabIndex = 7;
+			// 
+			// buttonCollectionDel
+			// 
+			buttonCollectionDel.Location = new Point(3, 227);
+			buttonCollectionDel.Name = "buttonCollectionDel";
+			buttonCollectionDel.Size = new Size(167, 23);
+			buttonCollectionDel.TabIndex = 6;
+			buttonCollectionDel.Text = "Удалить коллекцию";
+			buttonCollectionDel.UseVisualStyleBackColor = true;
+			buttonCollectionDel.Click += ButtonCollectionDel_Click;
+			// 
+			// listBoxCollection
+			// 
+			listBoxCollection.FormattingEnabled = true;
+			listBoxCollection.ItemHeight = 15;
+			listBoxCollection.Location = new Point(3, 112);
+			listBoxCollection.Name = "listBoxCollection";
+			listBoxCollection.Size = new Size(167, 109);
+			listBoxCollection.TabIndex = 5;
+			// 
+			// buttonCollectionAdd
+			// 
+			buttonCollectionAdd.Location = new Point(3, 83);
+			buttonCollectionAdd.Name = "buttonCollectionAdd";
+			buttonCollectionAdd.Size = new Size(167, 23);
+			buttonCollectionAdd.TabIndex = 4;
+			buttonCollectionAdd.Text = "Добавить коллекцию";
+			buttonCollectionAdd.UseVisualStyleBackColor = true;
+			buttonCollectionAdd.Click += ButtonCollectionAdd_Click;
+			// 
+			// radioButtonList
+			// 
+			radioButtonList.AutoSize = true;
+			radioButtonList.Location = new Point(98, 58);
+			radioButtonList.Name = "radioButtonList";
+			radioButtonList.Size = new Size(66, 19);
+			radioButtonList.TabIndex = 3;
+			radioButtonList.TabStop = true;
+			radioButtonList.Text = "Список";
+			radioButtonList.UseVisualStyleBackColor = true;
+			// 
+			// radioButtonMassive
+			// 
+			radioButtonMassive.AutoSize = true;
+			radioButtonMassive.Location = new Point(16, 58);
+			radioButtonMassive.Name = "radioButtonMassive";
+			radioButtonMassive.Size = new Size(67, 19);
+			radioButtonMassive.TabIndex = 2;
+			radioButtonMassive.TabStop = true;
+			radioButtonMassive.Text = "Массив";
+			radioButtonMassive.UseVisualStyleBackColor = true;
+			// 
+			// textBoxCollectionName
+			// 
+			textBoxCollectionName.Location = new Point(3, 29);
+			textBoxCollectionName.Name = "textBoxCollectionName";
+			textBoxCollectionName.Size = new Size(167, 23);
+			textBoxCollectionName.TabIndex = 1;
+			// 
+			// labelCollectionName
+			// 
+			labelCollectionName.AutoSize = true;
+			labelCollectionName.Location = new Point(26, 11);
+			labelCollectionName.Name = "labelCollectionName";
+			labelCollectionName.Size = new Size(125, 15);
+			labelCollectionName.TabIndex = 0;
+			labelCollectionName.Text = "Название коллекции:";
+			// 
 			// buttonRefresh
 			// 
 			buttonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-			buttonRefresh.Location = new Point(6, 499);
+			buttonRefresh.Location = new Point(3, 210);
 			buttonRefresh.Name = "buttonRefresh";
 			buttonRefresh.Size = new Size(167, 40);
 			buttonRefresh.TabIndex = 6;
@@ -72,7 +173,7 @@
 			// buttonGoToCheck
 			// 
 			buttonGoToCheck.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-			buttonGoToCheck.Location = new Point(6, 361);
+			buttonGoToCheck.Location = new Point(3, 170);
 			buttonGoToCheck.Name = "buttonGoToCheck";
 			buttonGoToCheck.Size = new Size(167, 40);
 			buttonGoToCheck.TabIndex = 5;
@@ -83,7 +184,7 @@
 			// buttonRemoveCar
 			// 
 			buttonRemoveCar.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-			buttonRemoveCar.Location = new Point(6, 251);
+			buttonRemoveCar.Location = new Point(3, 124);
 			buttonRemoveCar.Name = "buttonRemoveCar";
 			buttonRemoveCar.Size = new Size(167, 40);
 			buttonRemoveCar.TabIndex = 4;
@@ -93,7 +194,7 @@
 			// 
 			// maskedTextBoxPosition
 			// 
-			maskedTextBoxPosition.Location = new Point(6, 222);
+			maskedTextBoxPosition.Location = new Point(3, 95);
 			maskedTextBoxPosition.Mask = "00";
 			maskedTextBoxPosition.Name = "maskedTextBoxPosition";
 			maskedTextBoxPosition.Size = new Size(167, 23);
@@ -103,7 +204,7 @@
 			// buttonAddSportCar
 			// 
 			buttonAddSportCar.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-			buttonAddSportCar.Location = new Point(6, 137);
+			buttonAddSportCar.Location = new Point(3, 49);
 			buttonAddSportCar.Name = "buttonAddSportCar";
 			buttonAddSportCar.Size = new Size(167, 40);
 			buttonAddSportCar.TabIndex = 2;
@@ -114,7 +215,7 @@
 			// buttonAddCar
 			// 
 			buttonAddCar.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-			buttonAddCar.Location = new Point(6, 91);
+			buttonAddCar.Location = new Point(3, 3);
 			buttonAddCar.Name = "buttonAddCar";
 			buttonAddCar.Size = new Size(167, 40);
 			buttonAddCar.TabIndex = 1;
@@ -128,7 +229,7 @@
 			comboBoxSelectorCompany.DropDownStyle = ComboBoxStyle.DropDownList;
 			comboBoxSelectorCompany.FormattingEnabled = true;
 			comboBoxSelectorCompany.Items.AddRange(new object[] { "Хранилище" });
-			comboBoxSelectorCompany.Location = new Point(6, 22);
+			comboBoxSelectorCompany.Location = new Point(6, 291);
 			comboBoxSelectorCompany.Name = "comboBoxSelectorCompany";
 			comboBoxSelectorCompany.Size = new Size(167, 23);
 			comboBoxSelectorCompany.TabIndex = 0;
@@ -143,6 +244,21 @@
 			pictureBox.TabIndex = 1;
 			pictureBox.TabStop = false;
 			// 
+			// panelCompanyTools
+			// 
+			panelCompanyTools.Controls.Add(buttonAddCar);
+			panelCompanyTools.Controls.Add(buttonAddSportCar);
+			panelCompanyTools.Controls.Add(maskedTextBoxPosition);
+			panelCompanyTools.Controls.Add(buttonRefresh);
+			panelCompanyTools.Controls.Add(buttonRemoveCar);
+			panelCompanyTools.Controls.Add(buttonGoToCheck);
+			panelCompanyTools.Dock = DockStyle.Bottom;
+			panelCompanyTools.Enabled = false;
+			panelCompanyTools.Location = new Point(3, 360);
+			panelCompanyTools.Name = "panelCompanyTools";
+			panelCompanyTools.Size = new Size(173, 253);
+			panelCompanyTools.TabIndex = 9;
+			// 
 			// FormCarCollection
 			// 
 			AutoScaleDimensions = new SizeF(7F, 15F);
@@ -153,8 +269,11 @@
 			Name = "FormCarCollection";
 			Text = "Коллекция автомобилей";
 			groupBoxTools.ResumeLayout(false);
-			groupBoxTools.PerformLayout();
+			panelStorage.ResumeLayout(false);
+			panelStorage.PerformLayout();
 			((System.ComponentModel.ISupportInitialize)pictureBox).EndInit();
+			panelCompanyTools.ResumeLayout(false);
+			panelCompanyTools.PerformLayout();
 			ResumeLayout(false);
 		}
 
@@ -169,5 +288,15 @@
 		private PictureBox pictureBox;
 		private Button buttonGoToCheck;
 		private Button buttonRefresh;
+		private Panel panelStorage;
+		private Label labelCollectionName;
+		private TextBox textBoxCollectionName;
+		private RadioButton radioButtonList;
+		private RadioButton radioButtonMassive;
+		private Button buttonCollectionAdd;
+		private ListBox listBoxCollection;
+		private Button buttonCollectionDel;
+		private Button buttonCreateCompany;
+		private Panel panelCompanyTools;
 	}
 }
\ No newline at end of file
diff --git a/ProjectSportCar/ProjectSportCar/FormCarCollection.cs b/ProjectSportCar/ProjectSportCar/FormCarCollection.cs
index 6cbc738..c2af199 100644
--- a/ProjectSportCar/ProjectSportCar/FormCarCollection.cs
+++ b/ProjectSportCar/ProjectSportCar/FormCarCollection.cs
@@ -8,6 +8,11 @@ namespace ProjectSportCar;
 /// </summary>
 public partial class FormCarCollection : Form
 {
+	/// <summary>
+	/// Хранилише коллекций
+	/// </summary>
+	private readonly StorageCollection<DrawningCar> _storageCollection;
+
 	/// <summary>
 	/// Компания
 	/// </summary>
@@ -19,6 +24,7 @@ public partial class FormCarCollection : Form
 	public FormCarCollection()
 	{
 		InitializeComponent();
+		_storageCollection = new();
 	}
 
 	/// <summary>
@@ -28,12 +34,7 @@ public partial class FormCarCollection : Form
 	/// <param name="e"></param>
 	private void ComboBoxSelectorCompany_SelectedIndexChanged(object sender, EventArgs e)
 	{
-		switch (comboBoxSelectorCompany.Text)
-		{
-			case "Хранилище":
-				_company = new CarSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawningCar>());
-				break;
-		}
+		panelCompanyTools.Enabled = false;
 	}
 
 	/// <summary>
@@ -69,6 +70,7 @@ public partial class FormCarCollection : Form
 				drawningCar = new DrawningCar(random.Next(100, 300), random.Next(1000, 3000), GetColor(random));
 				break;
 			case nameof(DrawningSportCar):
+				// TODO выбор цветов
 				drawningCar = new DrawningSportCar(random.Next(100, 300), random.Next(1000, 3000),
 					Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
 					Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
@@ -185,4 +187,92 @@ public partial class FormCarCollection : Form
 
 		pictureBox.Image = _company.Show();
 	}
+
+	/// <summary>
+	/// Добавление коллекции
+	/// </summary>
+	/// <param name="sender"></param>
+	/// <param name="e"></param>
+	private void ButtonCollectionAdd_Click(object sender, EventArgs e)
+	{
+		if (string.IsNullOrEmpty(textBoxCollectionName.Text) || (!radioButtonList.Checked && !radioButtonMassive.Checked))
+		{
+			MessageBox.Show("Не все данные заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
+			return;
+		}
+
+		CollectionType collectionType = CollectionType.None;
+		if (radioButtonMassive.Checked)
+		{
+			collectionType = CollectionType.Massive;
+		}
+		else if (radioButtonList.Checked)
+		{
+			collectionType = CollectionType.List;
+		}
+
+		_storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
+		RerfreshListBoxItems();
+	}
+
+	/// <summary>
+	/// Удаление коллекции
+	/// </summary>
+	/// <param name="sender"></param>
+	/// <param name="e"></param>
+	private void ButtonCollectionDel_Click(object sender, EventArgs e)
+	{
+		// TODO прописать логику удаления элемента из коллекции
+		// нужно убедиться, что есть выбранная коллекция
+		// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись
+		// удалить и обновить ListBox
+	}
+
+	/// <summary>
+	/// Обновление списка в listBoxCollection
+	/// </summary>
+	private void RerfreshListBoxItems()
+	{
+		listBoxCollection.Items.Clear();
+		for (int i = 0; i < _storageCollection.Keys?.Count; ++i)
+		{
+			string? colName = _storageCollection.Keys?[i];
+			if (!string.IsNullOrEmpty(colName))
+			{
+				listBoxCollection.Items.Add(colName);
+			}
+		}
+
+	}
+
+	/// <summary>
+	/// Создание компании
+	/// </summary>
+	/// <param name="sender"></param>
+	/// <param name="e"></param>
+	private void ButtonCreateCompany_Click(object sender, EventArgs e)
+	{
+		if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null)
+		{
+			MessageBox.Show("Коллекция не выбрана");
+			return;
+		}
+
+		ICollectionGenericObjects<DrawningCar>? collection = _storageCollection[listBoxCollection.SelectedItem.ToString() ?? string.Empty];
+		if (collection == null)
+		{
+			MessageBox.Show("Коллекция не проинициализирована");
+			return;
+		}
+
+		switch (comboBoxSelectorCompany.Text)
+		{
+			case "Хранилище":
+				_company = new CarSharingService(pictureBox.Width, pictureBox.Height, collection);
+				break;
+		}
+
+		panelCompanyTools.Enabled = true;
+		RerfreshListBoxItems();
+	}
 }
\ No newline at end of file