diff --git a/WindStressPRM/Matrix.cs b/WindStressPRM/Matrix.cs
new file mode 100644
index 0000000000000000000000000000000000000000..158561f2dad235ad8efe6d84166c6b6008ff3c09
--- /dev/null
+++ b/WindStressPRM/Matrix.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+
+namespace WindStressPRM
+{
+    /// <summary>
+    /// Generic Matrix of type T
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public class Matrix<T>
+    {
+        /// <summary>
+        /// Size of cell. In meters
+        /// </summary>
+        public CellSize Size { get; set; }
+        /// <summary>
+        /// Cells Container
+        /// </summary>
+        public T[,] Cells { get; set; }
+        /// <summary>
+        /// Number of rows in matrix
+        /// </summary>
+        /// <returns></returns>
+        public int RowsCount()
+        {
+            return Cells.Rank > 0 ? Cells.GetLength(0) : 0;
+        }
+        /// <summary>
+        /// Number of columns 
+        /// </summary>
+        /// <returns></returns>
+        public int ColumnCount()
+        {
+            return Cells.Rank > 1 ? Cells.GetLength(1) : 0;
+        }
+    }
+    /// <summary>
+    /// Cell Sizes
+    /// Параметры ячейки (регулярной сетки)
+    /// </summary>
+    public class CellSize
+    {
+        /// <summary>
+        /// ширина ячейки (расстояние между соседними по широте центрами ячеек)
+        /// </summary>
+        public double Width { get; set; }
+        /// <summary>
+        /// высота ячейки (расстояние между соседними по долготе центрами ячеек)
+        /// </summary>
+        public double Height { get; set; }
+        /// <summary>
+        /// designated constructor
+        /// </summary>
+        /// <param name="wdh">Cell Width</param>
+        /// <param name="hgh">Cell Height</param>
+        public CellSize(double wdh, double hgh)
+        {
+            this.Width = wdh;
+            this.Height = hgh;
+            if (!(this.CheckValue()))
+            {
+                throw new System.ArgumentException("Cell width or height values are incorrect!");
+            }
+        }
+        /// <summary>
+        /// Проверка валидности полей
+        /// </summary>
+        /// <returns></returns>
+        public bool CheckValue()
+        {
+            return Width > 0 && Height > 0;
+        }
+    }
+}
diff --git a/WindStressPRM/WindStressPRM.cs b/WindStressPRM/WindStressPRM.cs
index ecbd4ce141b55ff897cc2b0370d49e4a8e8fdf58..8c52ee5695fb7f4484971aa48465a718ed4fc2a4 100644
--- a/WindStressPRM/WindStressPRM.cs
+++ b/WindStressPRM/WindStressPRM.cs
@@ -198,43 +198,6 @@ namespace WindStressPRM
         }
     }
     /// <summary>
-    /// Cell Size parameters
-    /// Параметры ячейки (регулярной сетки)
-    /// </summary>
-    public class CellSize
-    {
-        /// <summary>
-        /// ширина ячейки (расстояние между соседними по широте центрами ячеек)
-        /// </summary>
-        public double Width { get; set; }
-        /// <summary>
-        /// высота ячейки (расстояние между соседними по долготе центрами ячеек)
-        /// </summary>
-        public double Height { get; set; }
-        /// <summary>
-        /// designated constructor
-        /// </summary>
-        /// <param name="wdh">Cell Width</param>
-        /// <param name="hgh">Cell Height</param>
-        public CellSize(double wdh, double hgh)
-        {
-            this.Width = wdh;
-            this.Height = hgh;
-            if (!(this.CheckValue()))
-            {
-                throw new System.ArgumentException("Cell width or height values are incorrect!");
-            }
-        }
-        /// <summary>
-        /// Проверка валидности полей
-        /// </summary>
-        /// <returns></returns>
-        public bool CheckValue()
-        {
-            return Width > 0 && Height > 0;
-        }
-    }
-    /// <summary>
     /// power line object
     /// объект - ЛЭП
     /// </summary>