diff --git a/Filtration.ItemFilterPreview.Tests/app.config b/Filtration.ItemFilterPreview.Tests/app.config
index c486a0d..8ba7191 100644
--- a/Filtration.ItemFilterPreview.Tests/app.config
+++ b/Filtration.ItemFilterPreview.Tests/app.config
@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <runtime>
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <dependentAssembly>
-        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
-      </dependentAssembly>
-    </assemblyBinding>
-  </runtime>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
 </configuration>
\ No newline at end of file
diff --git a/Filtration.Tests/app.config b/Filtration.Tests/app.config
index dcaf02c..c7c66cc 100644
--- a/Filtration.Tests/app.config
+++ b/Filtration.Tests/app.config
@@ -1,43 +1,43 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <runtime>
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <dependentAssembly>
-        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
-      </dependentAssembly>
-    </assemblyBinding>
-  </runtime>
-<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="ControlzEx" publicKeyToken="f08b075e934b7045" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.2.0.4" newVersion="2.2.0.4" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.9.0.0" newVersion="2.9.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>
diff --git a/Filtration/App.config b/Filtration/App.config
index 79a6b82..6ab6fc5 100644
--- a/Filtration/App.config
+++ b/Filtration/App.config
@@ -1,95 +1,95 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-    <configSections>
-        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-            <section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
-        </sectionGroup>
-        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-            <section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
-        </sectionGroup>
-    </configSections>
-    <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
-    </startup>
-    <userSettings>
-        <Filtration.Properties.Settings>
-            <setting name="DefaultFilterDirectory" serializeAs="String">
-                <value />
-            </setting>
-            <setting name="ExtraLineBetweenBlocks" serializeAs="String">
-                <value>True</value>
-            </setting>
-            <setting name="SuppressUpdatesUpToVersionMajorPart" serializeAs="String">
-                <value>0</value>
-            </setting>
-            <setting name="SuppressUpdates" serializeAs="String">
-                <value>False</value>
-            </setting>
-            <setting name="SuppressUpdatesUpToVersionMinorPart" serializeAs="String">
-                <value>0</value>
-            </setting>
-            <setting name="StaticDataLastUpdated" serializeAs="String">
-                <value>2016-01-01</value>
-            </setting>
-            <setting name="DownloadPrereleaseUpdates" serializeAs="String">
-                <value>False</value>
-            </setting>
-            <setting name="ShowSectionBrowser" serializeAs="String">
-                <value>True</value>
-            </setting>
-            <setting name="ShowBlockGroupBrowser" serializeAs="String">
-                <value>True</value>
-            </setting>
-            <setting name="ShowBlockOutputPreview" serializeAs="String">
-                <value>True</value>
-            </setting>
-            <setting name="ShowAdvanced" serializeAs="String">
-                <value>False</value>
-            </setting>
-            <setting name="WindowState" serializeAs="String">
-                <value>Normal</value>
-            </setting>
-            <setting name="WindowWidth" serializeAs="String">
-                <value>1200</value>
-            </setting>
-            <setting name="WindowHeight" serializeAs="String">
-                <value>800</value>
-            </setting>
-            <setting name="LastOpenScripts" serializeAs="String">
-                <value />
-            </setting>
-            <setting name="BlocksExpandedOnOpen" serializeAs="String">
-                <value>True</value>
-            </setting>
-        </Filtration.Properties.Settings>
-    </userSettings>
-  <runtime>
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <dependentAssembly>
-        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
-      </dependentAssembly>
-      <dependentAssembly>
-        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
-      </dependentAssembly>
-    </assemblyBinding>
-  </runtime>
-  <applicationSettings>
-    <Filtration.Properties.Settings>
-      <setting name="ItemBaseTypesStaticDataUrl" serializeAs="String">
-        <value>http://ben-wallis.github.io/Filtration/ItemBaseTypes.txt</value>
-      </setting>
-      <setting name="ItemClassesStaticDataUrl" serializeAs="String">
-        <value>http://ben-wallis.github.io/Filtration/ItemClasses.txt</value>
-      </setting>
-      <setting name="UpdateDataUrl" serializeAs="String">
-        <value>http://ben-wallis.github.io/Filtration/filtration_version.xml</value>
-      </setting>
-    </Filtration.Properties.Settings>
-  </applicationSettings>
-</configuration>
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+    <configSections>
+        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+        </sectionGroup>
+        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+            <section name="Filtration.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+        </sectionGroup>
+    </configSections>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+    </startup>
+    <userSettings>
+        <Filtration.Properties.Settings>
+            <setting name="DefaultFilterDirectory" serializeAs="String">
+                <value />
+            </setting>
+            <setting name="ExtraLineBetweenBlocks" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="SuppressUpdatesUpToVersionMajorPart" serializeAs="String">
+                <value>0</value>
+            </setting>
+            <setting name="SuppressUpdates" serializeAs="String">
+                <value>False</value>
+            </setting>
+            <setting name="SuppressUpdatesUpToVersionMinorPart" serializeAs="String">
+                <value>0</value>
+            </setting>
+            <setting name="StaticDataLastUpdated" serializeAs="String">
+                <value>2016-01-01</value>
+            </setting>
+            <setting name="DownloadPrereleaseUpdates" serializeAs="String">
+                <value>False</value>
+            </setting>
+            <setting name="ShowSectionBrowser" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="ShowBlockGroupBrowser" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="ShowBlockOutputPreview" serializeAs="String">
+                <value>True</value>
+            </setting>
+            <setting name="ShowAdvanced" serializeAs="String">
+                <value>False</value>
+            </setting>
+            <setting name="WindowState" serializeAs="String">
+                <value>Normal</value>
+            </setting>
+            <setting name="WindowWidth" serializeAs="String">
+                <value>1200</value>
+            </setting>
+            <setting name="WindowHeight" serializeAs="String">
+                <value>800</value>
+            </setting>
+            <setting name="LastOpenScripts" serializeAs="String">
+                <value />
+            </setting>
+            <setting name="BlocksExpandedOnOpen" serializeAs="String">
+                <value>True</value>
+            </setting>
+        </Filtration.Properties.Settings>
+    </userSettings>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="Xceed.Wpf.AvalonDock" publicKeyToken="3e4669d2f30244f4" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.4.0.0" newVersion="3.4.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.0.4.0" newVersion="2.0.4.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+  <applicationSettings>
+    <Filtration.Properties.Settings>
+      <setting name="ItemBaseTypesStaticDataUrl" serializeAs="String">
+        <value>http://ben-wallis.github.io/Filtration/ItemBaseTypes.txt</value>
+      </setting>
+      <setting name="ItemClassesStaticDataUrl" serializeAs="String">
+        <value>http://ben-wallis.github.io/Filtration/ItemClasses.txt</value>
+      </setting>
+      <setting name="UpdateDataUrl" serializeAs="String">
+        <value>http://ben-wallis.github.io/Filtration/filtration_version.xml</value>
+      </setting>
+    </Filtration.Properties.Settings>
+  </applicationSettings>
+</configuration>
diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj
index f6cb9e6..24ba2cd 100644
--- a/Filtration/Filtration.csproj
+++ b/Filtration/Filtration.csproj
@@ -76,6 +76,9 @@
     <Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.1.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL">
       <HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
     </Reference>
+    <Reference Include="DynamicData, Version=6.7.0.2529, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\DynamicData.6.7.0.2529\lib\net46\DynamicData.dll</HintPath>
+    </Reference>
     <Reference Include="Fluent, Version=6.1.0.326, Culture=neutral, processorArchitecture=MSIL">
       <HintPath>..\packages\Fluent.Ribbon.6.1.0.326\lib\net45\Fluent.dll</HintPath>
     </Reference>
@@ -130,6 +133,9 @@
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.IO.Compression" />
+    <Reference Include="System.Reactive, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.Reactive.4.0.0\lib\net46\System.Reactive.dll</HintPath>
+    </Reference>
     <Reference Include="System.Runtime.Remoting" />
     <Reference Include="System.Runtime.Serialization" />
     <Reference Include="System.ServiceModel" />
@@ -138,6 +144,7 @@
       <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
     </Reference>
     <Reference Include="System.Web" />
+    <Reference Include="System.Windows" />
     <Reference Include="System.Windows.Controls.Input.Toolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\packages\WPFToolkit.3.5.50211.1\lib\System.Windows.Controls.Input.Toolkit.dll</HintPath>
diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
index 60a54d3..663b9ca 100644
--- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs
+++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
@@ -6,11 +6,13 @@ using System.ComponentModel;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
+using System.Reactive.Linq;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Data;
 using System.Windows.Forms;
 using System.Windows.Media.Imaging;
+using DynamicData.Binding;
 using Filtration.Common.Services;
 using Filtration.Common.ViewModels;
 using Filtration.Interface;
@@ -111,6 +113,7 @@ namespace Filtration.ViewModels
         private Predicate<IItemFilterBlockViewModel> _blockFilterPredicate;
         private ICommandManager _scriptCommandManager;
 
+		private List<IDisposable> _subscriptions;
         private ObservableCollection<string> _customSoundsAvailable;
         private readonly List<IItemFilterBlockViewModelBase> _lastAddedBlocks;
 
@@ -130,14 +133,20 @@ namespace Filtration.ViewModels
             _persistenceService = persistenceService;
             _messageBoxService = messageBoxService;
             _clipboardService = clipboardService;
+			_subscriptions = new List<IDisposable>();
             ItemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
-            SelectedBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
-            SelectedBlockViewModels.CollectionChanged += (s, e) =>
-            {
-                RaisePropertyChanged(nameof(SelectedBlockViewModels));
-                RaisePropertyChanged(nameof(LastSelectedBlockViewModel));
-                Messenger.Default.Send(new NotificationMessage("LastSelectedBlockChanged"));
-            };
+			SelectedBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>();
+
+			_subscriptions.Add(
+				SelectedBlockViewModels.ToObservableChangeSet()
+				.Throttle(TimeSpan.FromMilliseconds(30))
+				.Subscribe(x => {
+					RaisePropertyChanged(nameof(SelectedBlockViewModels));
+					RaisePropertyChanged(nameof(LastSelectedBlockViewModel));
+					Messenger.Default.Send(new NotificationMessage("LastSelectedBlockChanged"));
+				})
+			);
+
             _lastAddedBlocks = new List<IItemFilterBlockViewModelBase>();
             _showAdvanced = Settings.Default.ShowAdvanced;
 
@@ -815,6 +824,11 @@ namespace Filtration.ViewModels
 
         private void CloseScript()
         {
+			foreach (var disposable in Enumerable.Reverse(_subscriptions))
+			{
+				disposable.Dispose();
+			}
+
             var openMasterThemForScript =
                 _avalonDockWorkspaceViewModel.OpenMasterThemeForScript(this);
             if (openMasterThemForScript != null)
diff --git a/Filtration/packages.config b/Filtration/packages.config
index 483d44a..8428a6f 100644
--- a/Filtration/packages.config
+++ b/Filtration/packages.config
@@ -1,25 +1,27 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="AutoMapper" version="8.0.0" targetFramework="net461" />
-  <package id="Castle.Core" version="4.3.1" targetFramework="net461" />
-  <package id="Castle.Windsor" version="4.1.1" targetFramework="net461" />
-  <package id="CommonServiceLocator" version="2.0.4" targetFramework="net461" />
-  <package id="ControlzEx" version="3.0.2.4" targetFramework="net461" />
-  <package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net461" />
-  <package id="Extended.Wpf.Toolkit" version="3.4.0" targetFramework="net461" />
-  <package id="Fluent.Ribbon" version="6.1.0.326" targetFramework="net461" />
-  <package id="MahApps.Metro" version="1.2.4.0" targetFramework="net461" />
-  <package id="Mono.Cecil" version="0.9.6.1" targetFramework="net461" />
-  <package id="MvvmLightLibs" version="5.4.1.1" targetFramework="net461" />
-  <package id="NLog" version="4.5.11" targetFramework="net461" />
-  <package id="NLog.Schema" version="4.5.11" targetFramework="net461" />
-  <package id="NuGet.CommandLine" version="4.7.1" targetFramework="net461" developmentDependency="true" />
-  <package id="SharpCompress" version="0.17.1" targetFramework="net461" />
-  <package id="Splat" version="1.6.2" targetFramework="net461" />
-  <package id="squirrel.windows" version="1.9.0" targetFramework="net461" />
-  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
-  <package id="WindowsAPICodePack-Core" version="1.1.2" targetFramework="net461" />
-  <package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net461" />
-  <package id="WpfAnimatedGif" version="1.4.17" targetFramework="net461" />
-  <package id="WPFToolkit" version="3.5.50211.1" targetFramework="net451" />
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="AutoMapper" version="8.0.0" targetFramework="net461" />
+  <package id="Castle.Core" version="4.3.1" targetFramework="net461" />
+  <package id="Castle.Windsor" version="4.1.1" targetFramework="net461" />
+  <package id="CommonServiceLocator" version="2.0.4" targetFramework="net461" />
+  <package id="ControlzEx" version="3.0.2.4" targetFramework="net461" />
+  <package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net461" />
+  <package id="DynamicData" version="6.7.0.2529" targetFramework="net461" />
+  <package id="Extended.Wpf.Toolkit" version="3.4.0" targetFramework="net461" />
+  <package id="Fluent.Ribbon" version="6.1.0.326" targetFramework="net461" />
+  <package id="MahApps.Metro" version="1.2.4.0" targetFramework="net461" />
+  <package id="Mono.Cecil" version="0.9.6.1" targetFramework="net461" />
+  <package id="MvvmLightLibs" version="5.4.1.1" targetFramework="net461" />
+  <package id="NLog" version="4.5.11" targetFramework="net461" />
+  <package id="NLog.Schema" version="4.5.11" targetFramework="net461" />
+  <package id="NuGet.CommandLine" version="4.7.1" targetFramework="net461" developmentDependency="true" />
+  <package id="SharpCompress" version="0.17.1" targetFramework="net461" />
+  <package id="Splat" version="1.6.2" targetFramework="net461" />
+  <package id="squirrel.windows" version="1.9.0" targetFramework="net461" />
+  <package id="System.Reactive" version="4.0.0" targetFramework="net461" />
+  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
+  <package id="WindowsAPICodePack-Core" version="1.1.2" targetFramework="net461" />
+  <package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net461" />
+  <package id="WpfAnimatedGif" version="1.4.17" targetFramework="net461" />
+  <package id="WPFToolkit" version="3.5.50211.1" targetFramework="net451" />
 </packages>
\ No newline at end of file