diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..7ce35c8
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("SD")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SD")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("8e63e9b5-9970-493b-824d-acd0268ff0f9")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+// Version principale
+// Version secondaire
+// Numéro de build
+// Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SD.csproj b/SD.csproj
new file mode 100644
index 0000000..7cb7a40
--- /dev/null
+++ b/SD.csproj
@@ -0,0 +1,49 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {8E63E9B5-9970-493B-824D-ACD0268FF0F9}
+ Library
+ Properties
+ SD
+ SD
+ v4.6.1
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Step.cs b/Step.cs
new file mode 100644
index 0000000..9a6f02d
--- /dev/null
+++ b/Step.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SD
+{
+ public class Step
+ {
+ int _first;
+ int _second;
+
+ public int First
+ {
+ get { return _first; }
+ }
+
+ public int Second
+ {
+ get { return _second; }
+ }
+
+ public Step(int first, int second)
+ {
+ _first = first;
+ _second = second;
+ }
+ }
+}
diff --git a/StepDivider.cs b/StepDivider.cs
new file mode 100644
index 0000000..14f0b94
--- /dev/null
+++ b/StepDivider.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SD
+{
+ public class StepDivider : IEnumerable
+ {
+ //Step number = 2
+
+ private Step[] _steps = new Step[] { };
+ private int _number;
+ private int _divider;
+
+ private int initSteps(int reste)
+ {
+ if (reste == 0)
+ {
+ _steps = new Step[_divider];
+ return 1;
+ }
+ else
+ {
+ _steps = new Step[_divider + 1];
+ return 2;
+ }
+ }
+
+ public StepDivider(int number, int divider)
+ {
+ _number = number;
+ _divider = divider;
+
+ int divided = number / divider;
+ int reste = number % divider;
+ int add = initSteps(reste);
+
+ for (int x = 1; x < divider + add; x++)
+ {
+ int first_number = divided * (x - 1);
+ int second_number = divided * (x);
+
+ if (x == 1) //Check for first iter
+ {
+ first_number = 0;
+ second_number = divided * x;
+ }
+
+ if (x == divider + 1) //Check for last iter
+ {
+ second_number = first_number + reste;
+ }
+
+ _steps[x - 1] = new Step(first_number, second_number);
+ }
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ for (int x = 0; x < _steps.GetLength(0); x += 1)
+ {
+ yield return new Step(_steps[x].First, _steps[x].Second);
+ }
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+ }
+}