diff --git a/MES_Wind.suo b/MES_Wind.suo
deleted file mode 100644
index a3c467cbace9bd729edf0bc9503bc7e7313298a4..0000000000000000000000000000000000000000
Binary files a/MES_Wind.suo and /dev/null differ
diff --git a/MES_Wind/frmMain.cs b/MES_Wind/frmMain.cs
index 45420cbe96899e638a17371aee4146c21552711a..0337f1f284d2acc93361326d4c492fbc2f5bd580 100644
--- a/MES_Wind/frmMain.cs
+++ b/MES_Wind/frmMain.cs
@@ -268,17 +268,17 @@ namespace MES_Wind
                 }
                 //Create a PRM_wind class and add all the properties from above
                 PRMLibrary.Module prmwind = new PRMLibrary.Module();
-                prmwind.powerLines = powerlinesToPRM;
-                prmwind.powerStations = powerpointsToPRM;
-                prmwind.prognosticCells = prog_wind;
-                prmwind.prognosticCellSize = prog_cell;
-                prmwind.prognosticAffineCoefficients = prog_aff;
-                prmwind.climateCells = clim_wind;
-                prmwind.climateCellSize = clim_cell;
-                prmwind.climateAffineCoefficients = clim_aff;
+                prmwind.input.powerLines = powerlinesToPRM;
+                prmwind.input.powerStations = powerpointsToPRM;
+                prmwind.input.prognosticCells = prog_wind;
+                prmwind.input.prognosticCellSize = prog_cell;
+                prmwind.input.prognosticAffineCoefficients = prog_aff;
+                prmwind.input.climateCells = clim_wind;
+                prmwind.input.climateCellSize = clim_cell;
+                prmwind.input.climateAffineCoefficients = clim_aff;
                 //Calculate which lines are broken
                 List<PRMLibrary.Powerline> prmBrokenLines = prmwind.brokenPowerLinesAfterCheck();
-                prmwind.checkPower();
+                prmwind.CheckPower();
                 // new FeatureSet for resulting broken powerlines
                 //IFeatureSet brklineSet = new FeatureSet(FeatureType.Line);
                 //DataTable dt = pwlineSet.DataTable;
diff --git a/PRMLibrary/PRMLibrary.cs b/PRMLibrary/PRMLibrary.cs
index aebeb3ea991bf9754faa02dbd3e15af2b3f51625..04ea64d4b0de43fedcc869c6b223803b281081ff 100644
--- a/PRMLibrary/PRMLibrary.cs
+++ b/PRMLibrary/PRMLibrary.cs
@@ -125,7 +125,7 @@ namespace PRMLibrary
         FunctionClimate15 = 4
     }
 
-    public class Module
+    public class InputDTO
     {
         //prognistic raster info
         public List<List<PrognosticCell>> prognosticCells;
@@ -141,35 +141,44 @@ namespace PRMLibrary
         public List<Powerline> powerLines;
         //station collection
         public List<PowerStation> powerStations;
+
+        public double dist_threshold = 500;
+    }
+
+    public class OutputDTO
+    {
         //broken stations and lines
         public List<PowerStation> disabledStations = new List<PowerStation>();
         public List<Powerline> disabledLines = new List<Powerline>();
-       
-        public double dist_threshold = 500;
+    }
+
+    public class Module
+    {
+        public InputDTO input;
+        public OutputDTO output;
 
         //Main function for power graph algorithm
-        public void checkPower()
+        public void CheckPower()
         {
             //get the graph
             PreparingPowerItems();
             //start from source points
-            foreach (PowerStation pwstation in powerStations)
+            foreach (PowerStation pwstation in input.powerStations)
             {
                 if (pwstation.issource) { 
                     CheckPowerPointsForStation(pwstation); 
                 }
-
             }
-            foreach (Powerline line in powerLines)
+            foreach (Powerline line in input.powerLines)
             {
                 if (line.isbroken) { 
-                    disabledLines.Add(line); 
+                    output.disabledLines.Add(line); 
                 }
             }
-            foreach (PowerStation powerStation in powerStations)
+            foreach (PowerStation powerStation in input.powerStations)
             {
                 if (!powerStation.ison && !(powerStation.type.ToUpperInvariant().Trim() == "POLE")){
-                    disabledStations.Add(powerStation);
+                    output.disabledStations.Add(powerStation);
                 }
             }
             return;
@@ -180,7 +189,6 @@ namespace PRMLibrary
             if (!sourcepoint.ison)
             {
                 throw new Exception("CheckPowerPointsForStation is called from disabled sourcepoint");
-                return;
             }
             // if the point is not a pole  - i.e. we know 
             // it can redistribute power within connected lines
@@ -190,7 +198,7 @@ namespace PRMLibrary
                 if (!line.isbroken && !line.ison)
                 {
                     line.ison = true;
-                    foreach (PowerStation powerStation in powerStations)
+                    foreach (PowerStation powerStation in input.powerStations)
                     {
                         if (powerStation.identifier != sourcepoint.identifier && (powerStation.identifier == line.pointFromID || powerStation.identifier == line.pointToID))
                         {
@@ -226,7 +234,7 @@ namespace PRMLibrary
         {
             //First we make sure that all the sources are ON
             //and all non sources are OFF
-            foreach (PowerStation powerStation in powerStations)
+            foreach (PowerStation powerStation in input.powerStations)
             {
                 if (powerStation.issource == true) {
                     powerStation.ison = true; 
@@ -237,7 +245,7 @@ namespace PRMLibrary
                 // for each power station we create a list of powerlines it is attached to
                 List<Powerline> lines = new List<Powerline>();
 
-                foreach (Powerline line in powerLines)
+                foreach (Powerline line in input.powerLines)
                 {
                     //we also switch OFF all lines
                     line.ison = false;
@@ -252,7 +260,7 @@ namespace PRMLibrary
         {
             List<Powerline> brklines = new List<Powerline>();
             // actually there are curves in powerLines
-            foreach (Powerline powerCurve in powerLines)
+            foreach (Powerline powerCurve in input.powerLines)
             {
                 // get coordinates list
                 List<Coordinate> points = powerCurve.coords;
@@ -287,7 +295,7 @@ namespace PRMLibrary
         private bool linearLineIsBroken(Coordinate coord1, Coordinate coord2, double heightLine, int power)
         {
             double distance = Math.Sqrt((coord2.X - coord1.X) * (coord2.X - coord1.X) + (coord2.Y - coord1.Y) * (coord2.Y - coord1.Y));
-            double distpropD = distance / dist_threshold;
+            double distpropD = distance / input.dist_threshold;
             List<Coordinate> pointlist = new List<Coordinate>();
             Coordinate midpoint = new Coordinate();
             int distpropI = Convert.ToInt32(distpropD);
@@ -388,13 +396,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticAffineCoefficients;
+                        return input.prognosticAffineCoefficients;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateAffineCoefficients;
+                        return input.climateAffineCoefficients;
                     }
                 default:
                     break;
@@ -445,13 +453,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCells[index.Row][index.Col].coords;
+                        return input.prognosticCells[index.Row][index.Col].coords;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCells[index.Row][index.Col].coords;
+                        return input.climateCells[index.Row][index.Col].coords;
                     }
                 default:
                     break;
@@ -466,13 +474,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return forRows ? prognosticCells.Count : prognosticCells[0].Count;
+                        return forRows ? input.prognosticCells.Count : input.prognosticCells[0].Count;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return forRows ? climateCells.Count : climateCells[0].Count;
+                        return forRows ? input.climateCells.Count : input.climateCells[0].Count;
                     }
                 default:
                     break;
@@ -486,23 +494,23 @@ namespace PRMLibrary
             {
                 case FunctionType.FunctionVelocityX:
                     {
-                        return prognosticCells[index.Row][index.Col].velocityX;
+                        return input.prognosticCells[index.Row][index.Col].velocityX;
                     }
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCells[index.Row][index.Col].velocityY;
+                        return input.prognosticCells[index.Row][index.Col].velocityY;
                     }
                 case FunctionType.FunctionClimate5:
                     {
-                        return climateCells[index.Row][index.Col].wind5;
+                        return input.climateCells[index.Row][index.Col].wind5;
                     }
                 case FunctionType.FunctionClimate10:
                     {
-                        return climateCells[index.Row][index.Col].wind10;
+                        return input.climateCells[index.Row][index.Col].wind10;
                     }
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCells[index.Row][index.Col].wind15;
+                        return input.climateCells[index.Row][index.Col].wind15;
                     }
                 default:
                     break;
@@ -517,13 +525,13 @@ namespace PRMLibrary
                 case FunctionType.FunctionVelocityX:
                 case FunctionType.FunctionVelocityY:
                     {
-                        return prognosticCellSize;
+                        return input.prognosticCellSize;
                     }
                 case FunctionType.FunctionClimate5:
                 case FunctionType.FunctionClimate10:
                 case FunctionType.FunctionClimate15:
                     {
-                        return climateCellSize;
+                        return input.climateCellSize;
                     }
                 default:
                     break;