diff --git a/.vs/PoE-MxFilterGen/v15/.suo b/.vs/PoE-MxFilterGen/v15/.suo
index 48cc5a2..e260ba4 100644
Binary files a/.vs/PoE-MxFilterGen/v15/.suo and b/.vs/PoE-MxFilterGen/v15/.suo differ
diff --git a/CHANGELOG b/CHANGELOG
index bd10ef5..e9885d7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,6 @@
+[January 1, 2018][2.0.0]
++	Structure release. Will now generate from method or static data.
+
 [October 26, 2017][1.0.4]
 F	Fixed 3 crashes due to "not nullable variables".
-F	Will now verify if \data and \gen exists and create them if they don't.
-
-
-
+F	Will now verify if \data and \gen exists and create them if they don't.
\ No newline at end of file
diff --git a/PoE-MxFilterGen/Chaos_Orb.ico b/PoE-MxFilterGen/Chaos_Orb.ico
new file mode 100644
index 0000000..f133660
Binary files /dev/null and b/PoE-MxFilterGen/Chaos_Orb.ico differ
diff --git a/PoE-MxFilterGen/PoE-MxFilterGen.csproj b/PoE-MxFilterGen/PoE-MxFilterGen.csproj
index ff4ac18..1187119 100644
--- a/PoE-MxFilterGen/PoE-MxFilterGen.csproj
+++ b/PoE-MxFilterGen/PoE-MxFilterGen.csproj
@@ -31,6 +31,9 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>Chaos_Orb.ico</ApplicationIcon>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -48,8 +51,15 @@
     <Compile Include="json\accessories.cs" />
     <Compile Include="json\armours.cs" />
     <Compile Include="json\cards.cs" />
+    <Compile Include="json\chanceBelt.cs" />
+    <Compile Include="json\chanceShield.cs" />
+    <Compile Include="json\chanceQuiver.cs" />
+    <Compile Include="json\chanceHelmet.cs" />
+    <Compile Include="json\chanceGloves.cs" />
+    <Compile Include="json\chanceBoots.cs" />
     <Compile Include="json\maps.cs" />
     <Compile Include="json\settings.cs" />
+    <Compile Include="json\chanceBody.cs" />
     <Compile Include="json\weapons.cs" />
     <Compile Include="main.cs" />
     <Compile Include="msg.cs" />
@@ -60,5 +70,8 @@
     <None Include="App.config" />
     <None Include="packages.config" />
   </ItemGroup>
+  <ItemGroup>
+    <Content Include="Chaos_Orb.ico" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/PoE-MxFilterGen/json/accessories.cs b/PoE-MxFilterGen/json/accessories.cs
index 28d8ee3..125e9da 100644
--- a/PoE-MxFilterGen/json/accessories.cs
+++ b/PoE-MxFilterGen/json/accessories.cs
@@ -53,7 +53,7 @@ namespace PoE_MxFilterGen.json
     {
         private static string iB;
 
-        public static void GenAccessories()
+        public static void GenAccessories(string section)
         {
             List<string> itemBase = new List<string>();
             RootAccessory j = JsonConvert.DeserializeObject<RootAccessory>(File.ReadAllText("data/ninja.accessory.json", Encoding.UTF8));
@@ -66,7 +66,10 @@ namespace PoE_MxFilterGen.json
                     // Check if the item value is equal or superior to the minimum value
                     if (ln.chaosValue >= json.settings.GetMinimumValue())
                     {
-                        msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.baseType, ln.chaosValue), true, 1);
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
                         if (!itemBase.Contains(ln.baseType))
                         {
                             itemBase.Add(ln.baseType);
@@ -76,16 +79,17 @@ namespace PoE_MxFilterGen.json
                 }
             }
 
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## Accessories Gen" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "Show" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    PlayAlertSound 8 300" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## END #######" + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    PlayAlertSound 8 300", Encoding.UTF8);
         }
     }
 }
diff --git a/PoE-MxFilterGen/json/armours.cs b/PoE-MxFilterGen/json/armours.cs
index ab5afde..499cc3a 100644
--- a/PoE-MxFilterGen/json/armours.cs
+++ b/PoE-MxFilterGen/json/armours.cs
@@ -53,7 +53,7 @@ namespace PoE_MxFilterGen.json
     {
         private static string iB;
 
-        public static void GenArmours()
+        public static void GenArmours(string section)
         {
             List<string> itemBase = new List<string>();
             RootArmour j = JsonConvert.DeserializeObject<RootArmour>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
@@ -66,7 +66,10 @@ namespace PoE_MxFilterGen.json
                     // Check if the item value is equal or superior to the minimum value
                     if (ln.chaosValue >= json.settings.GetMinimumValue())
                     {
-                        msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.baseType, ln.chaosValue), true, 1);
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
                         if (!itemBase.Contains(ln.baseType))
                         {
                             itemBase.Add(ln.baseType);
@@ -76,16 +79,17 @@ namespace PoE_MxFilterGen.json
                 }
             }
 
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## Armours Gen" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "Show" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    PlayAlertSound 8 300" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## END #######" + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    PlayAlertSound 8 300", Encoding.UTF8);
         }
     }
 }
diff --git a/PoE-MxFilterGen/json/cards.cs b/PoE-MxFilterGen/json/cards.cs
index aa43ea6..1e1072f 100644
--- a/PoE-MxFilterGen/json/cards.cs
+++ b/PoE-MxFilterGen/json/cards.cs
@@ -53,7 +53,7 @@ namespace PoE_MxFilterGen.json
     {
         private static string iB;
 
-        public static void GenCards()
+        public static void GenCards(string section)
         {
             List<string> itemBase = new List<string>();
             RootCard j = JsonConvert.DeserializeObject<RootCard>(File.ReadAllText("data/ninja.card.json", Encoding.UTF8));
@@ -66,7 +66,10 @@ namespace PoE_MxFilterGen.json
                     // Check if the item value is equal or superior to the minimum value
                     if (ln.chaosValue >= json.settings.GetMinimumValue())
                     {
-                        msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }                    
                         if (!itemBase.Contains(ln.name))
                         {
                             itemBase.Add(ln.name);
@@ -76,16 +79,17 @@ namespace PoE_MxFilterGen.json
                 }
             }
 
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## Cards Gen" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "Show" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", @"    Class ""Divination Card""" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetTextColor 20 65 110" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBackgroundColor 224 224 224" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBorderColor 57 97 145" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    PlayAlertSound 5 300" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## END #######" + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
+            string fn = @"gen\"+section+".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}",section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, @"    Class ""Divination Card""" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 20 65 110" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBackgroundColor 224 224 224" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 57 97 145" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    PlayAlertSound 5 300", Encoding.UTF8);
         }
     }
 }
diff --git a/PoE-MxFilterGen/json/chanceBelt.cs b/PoE-MxFilterGen/json/chanceBelt.cs
new file mode 100644
index 0000000..d04b8ce
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceBelt.cs
@@ -0,0 +1,93 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineBelt
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierBelt
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineBelt
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineQuiver sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierQuiver> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootBelt
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceBelt
+    {
+        private static string iB;
+
+        public static void ChanceGenBelt(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.accessory.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Belt")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 30", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceBody.cs b/PoE-MxFilterGen/json/chanceBody.cs
new file mode 100644
index 0000000..c261e76
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceBody.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineBody
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierBody
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineBody
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineBody sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierBody> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootBody
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceBody
+    {
+        private static string iB;
+
+        public static void ChanceGenBody(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBody j = JsonConvert.DeserializeObject<ChanceRootBody>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Body Armour")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 50" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 40", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceBoots.cs b/PoE-MxFilterGen/json/chanceBoots.cs
new file mode 100644
index 0000000..6949b68
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceBoots.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineBoots
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierBoots
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineBoots
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineBoots sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierBoots> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootBoots
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceBoots
+    {
+        private static string iB;
+
+        public static void ChanceGenBoots(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Boots")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 25" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 35", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceGloves.cs b/PoE-MxFilterGen/json/chanceGloves.cs
new file mode 100644
index 0000000..7b7af97
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceGloves.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineGloves
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierGloves
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineGloves
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineGloves sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierGloves> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootGloves
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceGloves
+    {
+        private static string iB;
+
+        public static void ChanceGenGloves(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Gloves")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 25" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 35", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceHelmet.cs b/PoE-MxFilterGen/json/chanceHelmet.cs
new file mode 100644
index 0000000..0f579c5
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceHelmet.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineHelmet
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierHelmet
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineHelmet
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineHelmet sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierHelmet> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootHelmet
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceHelmet
+    {
+        private static string iB;
+
+        public static void ChanceGenHelmet(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Helmet")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 25" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 35", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceQuiver.cs b/PoE-MxFilterGen/json/chanceQuiver.cs
new file mode 100644
index 0000000..df49ac7
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceQuiver.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineQuiver
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierQuiver
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineQuiver
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineQuiver sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierQuiver> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootQuiver
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceQuiver
+    {
+        private static string iB;
+
+        public static void ChanceGenQuiver(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Quiver")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 2" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 40", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/chanceShield.cs b/PoE-MxFilterGen/json/chanceShield.cs
new file mode 100644
index 0000000..e4b63bd
--- /dev/null
+++ b/PoE-MxFilterGen/json/chanceShield.cs
@@ -0,0 +1,94 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PoE_MxFilterGen.json
+{
+    public class ChanceSparklineShield
+    {
+        public List<double?> data { get; set; }
+        public double? totalChange { get; set; }
+    }
+
+    public class ChanceExplicitModifierShield
+    {
+        public string text { get; set; }
+        public bool optional { get; set; }
+    }
+
+    public class ChanceLineShield
+    {
+        public int id { get; set; }
+        public string name { get; set; }
+        public string icon { get; set; }
+        public int mapTier { get; set; }
+        public int levelRequired { get; set; }
+        public string baseType { get; set; }
+        public int stackSize { get; set; }
+        public object variant { get; set; }
+        public object prophecyText { get; set; }
+        public object artFilename { get; set; }
+        public int links { get; set; }
+        public int itemClass { get; set; }
+        public ChanceSparklineQuiver sparkline { get; set; }
+        public List<object> implicitModifiers { get; set; }
+        public List<ChanceExplicitModifierQuiver> explicitModifiers { get; set; }
+        public string flavourText { get; set; }
+        public string itemType { get; set; }
+        public double chaosValue { get; set; }
+        public double exaltedValue { get; set; }
+        public int count { get; set; }
+    }
+
+    public class ChanceRootShield
+    {
+        public List<LineWeapon> lines { get; set; }
+    }
+
+    class chanceShield
+    {
+        private static string iB;
+
+        public static void ChanceGenShield(string section)
+        {
+            List<string> itemBase = new List<string>();
+            ChanceRootBoots j = JsonConvert.DeserializeObject<ChanceRootBoots>(File.ReadAllText("data/ninja.armour.json", Encoding.UTF8));
+
+            foreach (var ln in j.lines)
+            {
+                // Check if the item count is at least equal to the desired confidence level
+                if (ln.count >= json.settings.GetConfidence() && ln.links <= 4 && ln.itemType == "Shield")
+                {
+                    // Check if the item value is equal or superior to the minimum value
+                    if (ln.chaosValue >= json.settings.GetChancingMinValue())
+                    {
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
+                        if (!itemBase.Contains(ln.baseType))
+                        {
+                            itemBase.Add(ln.baseType);
+                            iB = iB + string.Format(@" ""{0}""", ln.baseType);
+                        }
+                    }
+                }
+            }
+
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Normal" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    ItemLevel >= 2" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 50 230 100" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45", Encoding.UTF8);
+        }
+    }
+}
diff --git a/PoE-MxFilterGen/json/maps.cs b/PoE-MxFilterGen/json/maps.cs
index ff2da99..4134d50 100644
--- a/PoE-MxFilterGen/json/maps.cs
+++ b/PoE-MxFilterGen/json/maps.cs
@@ -47,7 +47,7 @@ namespace PoE_MxFilterGen.json
     {
         private static string iB;
 
-        public static void GenMaps()
+        public static void GenMaps(string section)
         {
             List<string> itemBase = new List<string>();
             RootMap j = JsonConvert.DeserializeObject<RootMap>(File.ReadAllText("data/ninja.map.json", Encoding.UTF8));
@@ -60,7 +60,10 @@ namespace PoE_MxFilterGen.json
                     // Check if the item value is equal or superior to the minimum value
                     if (ln.chaosValue >= json.settings.GetMinimumValue())
                     {
-                        msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.baseType, ln.chaosValue), true, 1);
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
                         if (!itemBase.Contains(ln.baseType))
                         {
                             itemBase.Add(ln.baseType);
@@ -70,16 +73,17 @@ namespace PoE_MxFilterGen.json
                 }
             }
 
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## Maps Gen" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "Show" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    PlayAlertSound 8 300" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## END #######" + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    PlayAlertSound 8 300", Encoding.UTF8);
         }
     }
 }
diff --git a/PoE-MxFilterGen/json/settings.cs b/PoE-MxFilterGen/json/settings.cs
index d8a9b16..5378222 100644
--- a/PoE-MxFilterGen/json/settings.cs
+++ b/PoE-MxFilterGen/json/settings.cs
@@ -14,6 +14,8 @@ namespace PoE_MxFilterGen.json
         public string league { get; set; }
         public int confidence { get; set; }
         public int minimumValue { get; set; }
+        public int chancingMinValue { get; set; }
+        public bool verbose { get; set; }
     }
 
     class settings
@@ -41,5 +43,17 @@ namespace PoE_MxFilterGen.json
             SETTINGS j = JsonConvert.DeserializeObject<SETTINGS>(File.ReadAllText("settings.json"));
             return j.minimumValue;
         }
+
+        public static int GetChancingMinValue()
+        {
+            SETTINGS j = JsonConvert.DeserializeObject<SETTINGS>(File.ReadAllText("settings.json"));
+            return j.chancingMinValue;
+        }
+
+        public static bool GetVerbose()
+        {
+            SETTINGS j = JsonConvert.DeserializeObject<SETTINGS>(File.ReadAllText("settings.json"));
+            return j.verbose;
+        }
     }
 }
diff --git a/PoE-MxFilterGen/json/weapons.cs b/PoE-MxFilterGen/json/weapons.cs
index b5201d6..6bb9c72 100644
--- a/PoE-MxFilterGen/json/weapons.cs
+++ b/PoE-MxFilterGen/json/weapons.cs
@@ -53,7 +53,7 @@ namespace PoE_MxFilterGen.json
     {
         private static string iB;
 
-        public static void GenWeapons()
+        public static void GenWeapons(string section)
         {
             List<string> itemBase = new List<string>();
             RootWeapon j = JsonConvert.DeserializeObject<RootWeapon>(File.ReadAllText("data/ninja.weapon.json", Encoding.UTF8));
@@ -66,7 +66,10 @@ namespace PoE_MxFilterGen.json
                     // Check if the item value is equal or superior to the minimum value
                     if (ln.chaosValue >= json.settings.GetMinimumValue())
                     {
-                        msg.CMW(string.Format("[{0}][{1}c] Added to the list.",ln.baseType,ln.chaosValue), true, 1);
+                        if (json.settings.GetVerbose())
+                        {
+                            msg.CMW(string.Format("[{0}][{1}c] Added to the list.", ln.name, ln.chaosValue), true, 1);
+                        }
                         if (!itemBase.Contains(ln.baseType))
                         {
                             itemBase.Add(ln.baseType);
@@ -76,16 +79,17 @@ namespace PoE_MxFilterGen.json
                 }
             }
 
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## Weapons Gen" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "Show" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "    PlayAlertSound 8 300" + Environment.NewLine, Encoding.UTF8);
-            File.AppendAllText(@"gen\" + main.fDate + "_gen.txt", "## END #######" + Environment.NewLine + Environment.NewLine, Encoding.UTF8);
+            string fn = @"gen\" + section + ".filter";
+            File.AppendAllText(fn, string.Format("# Section: {0}", section) + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "Show" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    BaseType" + iB + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    Rarity = Unique" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetTextColor 222 95 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBackgroundColor 255 255 255" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetBorderColor 180 96 0" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    SetFontSize 45" + Environment.NewLine, Encoding.UTF8);
+            File.AppendAllText(fn, "    PlayAlertSound 8 300", Encoding.UTF8);
         }
     }
 }
diff --git a/PoE-MxFilterGen/main.cs b/PoE-MxFilterGen/main.cs
index 89e57d9..470f00a 100644
--- a/PoE-MxFilterGen/main.cs
+++ b/PoE-MxFilterGen/main.cs
@@ -1,4 +1,5 @@
-using System;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
@@ -12,10 +13,23 @@ namespace PoE_MxFilterGen
     {
         private static DateTime dt = DateTime.Now;
 
-        public static string version = "1.0.4";
-        public static string release = "stable";
+        public static string version = "2.0.0";
         public static string fDate = string.Format("{0}-{1}-{2}",dt.Day,dt.Month,dt.Year);
 
+        public class STRUCTURE
+        {
+            public string section { get; set; }
+            public bool gen { get; set; }
+            public bool @static { get; set; }
+            public bool remote { get; set; }
+            public string url { get; set; }
+        }
+
+        public class RootStructure
+        {
+            public List<STRUCTURE> structures { get; set; }
+        }
+
         static void Main(string[] args)
         {
             msg.Splash();
@@ -23,6 +37,8 @@ namespace PoE_MxFilterGen
             msg.CMW(string.Format("League: {0}", json.settings.GetLeague()), true, 1);
             msg.CMW(string.Format("Confidence: {0}", json.settings.GetConfidence().ToString()), true, 1);
             msg.CMW(string.Format("Minimum Value: {0}c", json.settings.GetMinimumValue().ToString()), true, 1);
+            msg.CMW(string.Format("Chancing Min. Value: {0}c", json.settings.GetChancingMinValue().ToString()), true, 1);
+            msg.CMW(string.Format("Verbose: {0}", json.settings.GetVerbose().ToString()), true, 1);
 
             // Check if data and gen exists
             if (!Directory.Exists(@"data\"))
@@ -33,10 +49,15 @@ namespace PoE_MxFilterGen
             {
                 Directory.CreateDirectory(@"gen\");
             }
+            if (!Directory.Exists(@"filter\"))
+            {
+                Directory.CreateDirectory(@"filter\");
+            }
 
             // Clean all generated data
             DirectoryInfo dataDir = new DirectoryInfo(@"data\");
             DirectoryInfo genDir = new DirectoryInfo(@"gen\");
+            DirectoryInfo filterDir = new DirectoryInfo(@"filter\");
             foreach (FileInfo file in dataDir.GetFiles())
             {
                 file.Delete();
@@ -45,6 +66,10 @@ namespace PoE_MxFilterGen
             {
                 file.Delete();
             }
+            foreach (FileInfo file in filterDir.GetFiles())
+            {
+                file.Delete();
+            }
 
             // Get latest poe.ninja api
             web.SaveString(json.settings.GetAPI() + "GetUniqueArmourOverview?league=" + json.settings.GetLeague(), "data/ninja.armour.json");
@@ -53,16 +78,99 @@ namespace PoE_MxFilterGen
             web.SaveString(json.settings.GetAPI() + "GetUniqueMapOverview?league=" + json.settings.GetLeague(), "data/ninja.map.json");
             web.SaveString(json.settings.GetAPI() + "GetDivinationCardsOverview?league=" + json.settings.GetLeague(), "data/ninja.card.json");
 
-            msg.CMW("########## Generating Weapons  ##########",true,1);
-            json.weapons.GenWeapons();
-            msg.CMW("########## Generating Armours ##########", true, 1);
-            json.armours.GenArmours();
-            msg.CMW("########## Generating Accessories ##########", true, 1);
-            json.accessories.GenAccessories();
-            msg.CMW("########## Generating Maps ##########", true, 1);
-            json.maps.GenMaps();
-            msg.CMW("########## Generating Cards ##########", true, 1);
-            json.cards.GenCards();
+            // Get the structure list
+            RootStructure j = JsonConvert.DeserializeObject<RootStructure>(File.ReadAllText("structure.json", Encoding.UTF8));
+
+            // Read the structure one by one to process gen
+            // You specify a gen here by his structure name with the corresponding method.
+            // I might add external DLL support in the future...
+            foreach (var sec in j.structures)
+            {
+                if (sec.gen == true)
+                {
+                    switch (sec.section)
+                    {
+                        case "EXPENSIVE UNIQUE (GEN) (Maps)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.maps.GenMaps(sec.section);
+                            break;
+
+                        case "DIVINATION CARD (GEN)":
+                            msg.CMW(string.Format("GEN: {0}",sec.section), true, 1);
+                            json.cards.GenCards(sec.section);
+                            break;
+
+                        case "EXPENSIVE UNIQUE (GEN) (Weapons)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.weapons.GenWeapons(sec.section);
+                            break;
+
+                        case "EXPENSIVE UNIQUE (GEN) (Armours)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.armours.GenArmours(sec.section);
+                            break;
+
+                        case "EXPENSIVE UNIQUE (GEN) (Accessories)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.accessories.GenAccessories(sec.section);
+                            break;
+
+                        case "CHANCING (Body)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceBody.ChanceGenBody(sec.section);
+                            break;
+
+                        case "CHANCING (Boots)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceBoots.ChanceGenBoots(sec.section);
+                            break;
+
+                        case "CHANCING (Gloves)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceGloves.ChanceGenGloves(sec.section);
+                            break;
+
+                        case "CHANCING (Helmet)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceHelmet.ChanceGenHelmet(sec.section);
+                            break;
+
+                        case "CHANCING (Quiver)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceQuiver.ChanceGenQuiver(sec.section);
+                            break;
+
+                        case "CHANCING (Shield)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceShield.ChanceGenShield(sec.section);
+                            break;
+
+                        case "CHANCING (Belt)":
+                            msg.CMW(string.Format("GEN: {0}", sec.section), true, 1);
+                            json.chanceBelt.ChanceGenBelt(sec.section);
+                            break;
+                    }
+                }
+            }
+
+            // Create the final filter.
+            foreach (var sec in j.structures)
+            {
+                if (sec.gen == true)
+                {
+                    File.AppendAllText(@"filter\MxFilter.filter", File.ReadAllText(string.Format("gen\\{0}.filter", sec.section)));
+                    File.AppendAllText(@"filter\MxFilter.filter", "" + Environment.NewLine);
+                    File.AppendAllText(@"filter\MxFilter.filter", "" + Environment.NewLine);
+                } else
+                {
+                    File.AppendAllText(@"filter\MxFilter.filter", string.Format("# Section: {0}",sec.section) + Environment.NewLine);
+                    File.AppendAllText(@"filter\MxFilter.filter", "" + Environment.NewLine);
+                    File.AppendAllText(@"filter\MxFilter.filter", File.ReadAllText(string.Format("structure\\{0}.filter", sec.section)));
+                    File.AppendAllText(@"filter\MxFilter.filter", "" + Environment.NewLine);
+                    File.AppendAllText(@"filter\MxFilter.filter", "" + Environment.NewLine);
+                }
+                
+            }
         }
     }
 }
diff --git a/PoE-MxFilterGen/msg.cs b/PoE-MxFilterGen/msg.cs
index 223dc3c..5000c4f 100644
--- a/PoE-MxFilterGen/msg.cs
+++ b/PoE-MxFilterGen/msg.cs
@@ -118,15 +118,10 @@ namespace PoE_MxFilterGen
         {
             Console.ForegroundColor = ConsoleColor.Cyan;
             Console.WriteLine("");
-            Console.WriteLine(@"############################");
-            Console.WriteLine(@"#                          #");
-            Console.WriteLine(@"#       MxFilterGen        #");
-            Console.WriteLine(@"#         by mikx          #");
-            Console.WriteLine(@"#       poe.mikx.xyz       #");
-            Console.WriteLine(@"#                          #");
-            Console.WriteLine(@"#--------------------------#");
-            Console.WriteLine(String.Format("#  MxFilterGen {0}-{1}   #", main.version, main.release));
-            Console.WriteLine(@"############################");
+            Console.WriteLine("#### MxFilterGen");
+            Console.WriteLine(string.Format("#### VERSION: {0}",main.version));
+            Console.WriteLine("#### DEV: mikx");
+            Console.WriteLine("#### POWERED BY: poe.ninja");
             Console.WriteLine("");
             Console.ForegroundColor = ConsoleColor.White;
         }
diff --git a/PoE-MxFilterGen/obj/Debug/CoreCompileInputs.cache b/PoE-MxFilterGen/obj/Debug/CoreCompileInputs.cache
index fdf488e..f3d0e74 100644
--- a/PoE-MxFilterGen/obj/Debug/CoreCompileInputs.cache
+++ b/PoE-MxFilterGen/obj/Debug/CoreCompileInputs.cache
@@ -1 +1 @@
-bfff0fcf98b7df58adeb8698423149e393b63067
+ecaecd07e551f42ed08ba90718c4222d96a3a595
diff --git a/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
index 2ff6306..992fbcc 100644
Binary files a/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/PoE-MxFilterGen/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt
index 1156119..c6e6513 100644
--- a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt
+++ b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csproj.FileListAbsolute.txt
@@ -6,3 +6,11 @@ D:\_MxGit\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.exe
 D:\_MxGit\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.pdb
 D:\_MxGit\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.dll
 D:\_MxGit\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.xml
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.exe.config
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.exe
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\mxfiltergen.pdb
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.dll
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\bin\Debug\Newtonsoft.Json.xml
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\PoE-MxFilterGen.csprojResolveAssemblyReference.cache
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.exe
+D:\_MxGitHub\PoE-MxFilterGen\PoE-MxFilterGen\obj\Debug\mxfiltergen.pdb
diff --git a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache
index 40dd21d..4370f56 100644
Binary files a/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache and b/PoE-MxFilterGen/obj/Debug/PoE-MxFilterGen.csprojResolveAssemblyReference.cache differ
diff --git a/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe b/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe
index 189067c..7a2361c 100644
Binary files a/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe and b/PoE-MxFilterGen/obj/Debug/mxfiltergen.exe differ
diff --git a/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb b/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb
index 170e163..0480fa8 100644
Binary files a/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb and b/PoE-MxFilterGen/obj/Debug/mxfiltergen.pdb differ