diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile
index fc359c3989febbbfe8bb4531f2e778045a1f702f..398b848f09296e44d13bd7e8ec4cdfe4a968c47a 100644
--- a/Builds/Linux/Makefile
+++ b/Builds/Linux/Makefile
@@ -18,12 +18,12 @@ ifeq ($(CONFIG),Debug)
     TARGET_ARCH := -march=native
   endif
 
-  CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.4.2" -D "JUCE_APP_VERSION_HEX=0x402" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules -I JuceLibraryCode/
+  CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.4.2.1" -D "JUCE_APP_VERSION_HEX=0x40201" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules -I JuceLibraryCode/
   CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O3 -rdynamic -fvisibility=hidden
   CXXFLAGS += $(CFLAGS) -std=c++11
   LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -L/usr/local/include -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -ldl -lXext -lGLU -rdynamic -fPIC -Wl,-rpath,'$$ORIGIN'
 
-  TARGET := open-ephys.so
+  TARGET := open-ephys
   BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
   CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)
 endif
@@ -38,7 +38,7 @@ ifeq ($(CONFIG),Release)
     TARGET_ARCH := -march=native
   endif
 
-  CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.4.2" -D "JUCE_APP_VERSION_HEX=0x402" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules -I JuceLibraryCode/
+  CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=0.4.2.1" -D "JUCE_APP_VERSION_HEX=0x40201" -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../JuceLibraryCode/modules -I JuceLibraryCode/
   CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 -rdynamic -fvisibility=hidden
   CXXFLAGS += $(CFLAGS) -std=c++11
   LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt -ldl -lXext -lGLU -rdynamic -fPIC -Wl,-rpath,'$$ORIGIN'
diff --git a/Builds/MacOSX/Info-App.plist b/Builds/MacOSX/Info-App.plist
index d6c7290d7f5f5fa579e83afc7e663d3ffbc1358d..29f12d9086cc1628e0c03fdeaf32d19f415fed47 100644
--- a/Builds/MacOSX/Info-App.plist
+++ b/Builds/MacOSX/Info-App.plist
@@ -18,9 +18,9 @@
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleShortVersionString</key>
-    <string>0.4.2</string>
+    <string>0.4.2.1</string>
     <key>CFBundleVersion</key>
-    <string>0.4.2</string>
+    <string>0.4.2.1</string>
     <key>NSHumanReadableCopyright</key>
     <string>Open Ephys</string>
     <key>NSHighResolutionCapable</key>
diff --git a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
index c7ec046745c24e7a999f8886f5951ad00c83c2d5..688922995b904eeaf72f3e8b721819ce474a81b3 100644
--- a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
+++ b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj
@@ -3358,8 +3358,8 @@
 					"_DEBUG=1",
 					"DEBUG=1",
 					"JUCER_XCODE_MAC_F6D2F4CF=1",
-					"JUCE_APP_VERSION=0.4.2",
-					"JUCE_APP_VERSION_HEX=0x402", );
+					"JUCE_APP_VERSION=0.4.2.1",
+					"JUCE_APP_VERSION_HEX=0x40201", );
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				HEADER_SEARCH_PATHS = ("~/SDKs/vstsdk2.4", "../../JuceLibraryCode", "../../JuceLibraryCode/modules", "JuceLibraryCode/", "$(inherited)");
 				INFOPLIST_FILE = Info-App.plist;
@@ -3382,8 +3382,8 @@
 					"_NDEBUG=1",
 					"NDEBUG=1",
 					"JUCER_XCODE_MAC_F6D2F4CF=1",
-					"JUCE_APP_VERSION=0.4.2",
-					"JUCE_APP_VERSION_HEX=0x402", );
+					"JUCE_APP_VERSION=0.4.2.1",
+					"JUCE_APP_VERSION_HEX=0x40201", );
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
 				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 				HEADER_SEARCH_PATHS = ("~/SDKs/vstsdk2.4", "../../JuceLibraryCode", "../../JuceLibraryCode/modules", "JuceLibraryCode/", "$(inherited)");
diff --git a/Builds/VisualStudio2012/open-ephys.vcxproj b/Builds/VisualStudio2012/open-ephys.vcxproj
index b7a88202ad2219343da620268f70532043af098f..4ba7d96512184069544079c433247d9e6cac9fd0 100644
--- a/Builds/VisualStudio2012/open-ephys.vcxproj
+++ b/Builds/VisualStudio2012/open-ephys.vcxproj
@@ -84,8 +84,8 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -129,8 +129,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Full</Optimization>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -176,8 +176,8 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -219,8 +219,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Full</Optimization>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCER_VS2012_78A501F=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
diff --git a/Builds/VisualStudio2012/resources.rc b/Builds/VisualStudio2012/resources.rc
index 13bfc913a492ab1a9b507be55871002f2d99aaa7..8582bebd4f2d17cfd432bf1576b35c7ed7466274 100644
--- a/Builds/VisualStudio2012/resources.rc
+++ b/Builds/VisualStudio2012/resources.rc
@@ -7,7 +7,7 @@
 #include <windows.h>
 
 VS_VERSION_INFO VERSIONINFO
-FILEVERSION  0,4,2,0
+FILEVERSION  0,4,2,1
 BEGIN
   BLOCK "StringFileInfo"
   BEGIN
@@ -15,9 +15,9 @@ BEGIN
     BEGIN
       VALUE "CompanyName",  "Open Ephys\0"
       VALUE "FileDescription",  "open-ephys\0"
-      VALUE "FileVersion",  "0.4.2\0"
+      VALUE "FileVersion",  "0.4.2.1\0"
       VALUE "ProductName",  "open-ephys\0"
-      VALUE "ProductVersion",  "0.4.2\0"
+      VALUE "ProductVersion",  "0.4.2.1\0"
     END
   END
 
diff --git a/Builds/VisualStudio2013/open-ephys.vcxproj b/Builds/VisualStudio2013/open-ephys.vcxproj
index 573629d6bb6d8573667f5b977ce889d2486b7281..611ed81bcb60c456cdc89b89e3073d634a3cedbd 100644
--- a/Builds/VisualStudio2013/open-ephys.vcxproj
+++ b/Builds/VisualStudio2013/open-ephys.vcxproj
@@ -84,8 +84,8 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -130,8 +130,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Full</Optimization>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -178,8 +178,8 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
@@ -222,8 +222,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Full</Optimization>
-      <AdditionalIncludeDirectories>c:\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2;JUCE_APP_VERSION_HEX=0x402;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>~\SDKs\VST3 SDK;..\..\JuceLibraryCode;..\..\JuceLibraryCode\modules;JuceLibraryCode/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;NOMINMAX;JUCE_API=__declspec(dllexport);JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=0.4.2.1;JUCE_APP_VERSION_HEX=0x40201;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader/>
diff --git a/Builds/VisualStudio2013/resources.rc b/Builds/VisualStudio2013/resources.rc
index 13bfc913a492ab1a9b507be55871002f2d99aaa7..8582bebd4f2d17cfd432bf1576b35c7ed7466274 100644
--- a/Builds/VisualStudio2013/resources.rc
+++ b/Builds/VisualStudio2013/resources.rc
@@ -7,7 +7,7 @@
 #include <windows.h>
 
 VS_VERSION_INFO VERSIONINFO
-FILEVERSION  0,4,2,0
+FILEVERSION  0,4,2,1
 BEGIN
   BLOCK "StringFileInfo"
   BEGIN
@@ -15,9 +15,9 @@ BEGIN
     BEGIN
       VALUE "CompanyName",  "Open Ephys\0"
       VALUE "FileDescription",  "open-ephys\0"
-      VALUE "FileVersion",  "0.4.2\0"
+      VALUE "FileVersion",  "0.4.2.1\0"
       VALUE "ProductName",  "open-ephys\0"
-      VALUE "ProductVersion",  "0.4.2\0"
+      VALUE "ProductVersion",  "0.4.2.1\0"
     END
   END
 
diff --git a/JuceLibraryCode/JuceHeader.h b/JuceLibraryCode/JuceHeader.h
index 1cf20a1c5c7d43aeeabb48a43dc74f8f3c13823c..c0cf844233fd45f75d3b40fd499d4cc5e34b9217 100644
--- a/JuceLibraryCode/JuceHeader.h
+++ b/JuceLibraryCode/JuceHeader.h
@@ -42,8 +42,8 @@
 namespace ProjectInfo
 {
     const char* const  projectName    = "open-ephys";
-    const char* const  versionString  = "0.4.2";
-    const int          versionNumber  = 0x402;
+    const char* const  versionString  = "0.4.2.1";
+    const int          versionNumber  = 0x40201;
 }
 #endif
 
diff --git a/Source/Processors/RecordNode/OriginalRecording.cpp b/Source/Processors/RecordNode/OriginalRecording.cpp
index fc5b8ac333d3edfe737f4de9e8d293803b0ac3e7..f3163358b07af7d90a3cea1e010a6430ca42b050 100644
--- a/Source/Processors/RecordNode/OriginalRecording.cpp
+++ b/Source/Processors/RecordNode/OriginalRecording.cpp
@@ -67,21 +67,6 @@ String OriginalRecording::getEngineID() const
     return "OPENEPHYS";
 }
 
-void OriginalRecording::registerProcessor(const GenericProcessor* proc)
-{
-	procIndex = 0;
-}
-
-void OriginalRecording::addDataChannel(int index, const DataChannel* chan)
-{
-    //Just populate the file array with null so we can address it by index afterwards
-    fileArray.add(nullptr);
-    blockIndex.add(0);
-    samplesSinceLastTimestamp.add(0);
-	originalChannelIndexes.add(procIndex);
-	procIndex++;
-}
-
 void OriginalRecording::addSpikeElectrode(int index, const SpikeChannel* elec)
 {
     spikeFileArray.add(nullptr);
@@ -109,16 +94,15 @@ void OriginalRecording::openFiles(File rootFolder, int experimentNumber, int rec
     openFile(rootFolder,getEventChannel(0), 0);
     openMessageFile(rootFolder);
 
-    for (int i = 0; i < fileArray.size(); i++)
-    {
-        if (getDataChannel(i)->getRecordState())
-        {
-            openFile(rootFolder,getDataChannel(i),i);
-            blockIndex.set(i,0);
-            samplesSinceLastTimestamp.set(i,0);
-        }
+	int nChannels = getNumRecordedChannels();
 
-    }
+	for (int i = 0; i < nChannels; i++)
+	{
+		const DataChannel* ch = getDataChannel(getRealChannel(i));
+		openFile(rootFolder, ch, getRealChannel(i));
+		blockIndex.add(0);
+		samplesSinceLastTimestamp.add(0);
+	}
     for (int i = 0; i < spikeFileArray.size(); i++)
     {
         openSpikeFile(rootFolder,getSpikeChannel(i),i);
@@ -184,7 +168,7 @@ void OriginalRecording::openFile(File rootFolder, const InfoObjectCommon* ch, in
         eventFile = chFile;
     else
     {
-        fileArray.set(channelIndex,chFile);
+        fileArray.add(chFile);
         if (ch->getCurrentNodeID() != lastProcId)
         {
             lastProcId = ch->getCurrentNodeID();
@@ -465,10 +449,7 @@ void OriginalRecording::writeData(int writeChannel, int realChannel, const float
 {
 	int samplesWritten = 0;
 
-	//int sourceNodeId = getChannel(realChannel)->sourceNodeId;
-
-	//TODO: optimize. Now we use realchannel, we should optimize the whole thing to only use recorded channels
-	samplesSinceLastTimestamp.set(realChannel, 0);
+	samplesSinceLastTimestamp.set(writeChannel, 0);
 
 	int nSamples = size;
 
@@ -476,7 +457,7 @@ void OriginalRecording::writeData(int writeChannel, int realChannel, const float
             {
                 int numSamplesToWrite = nSamples - samplesWritten;
 
-                if (blockIndex[realChannel] + numSamplesToWrite < BLOCK_LENGTH) // we still have space in this block
+				if (blockIndex[writeChannel] + numSamplesToWrite < BLOCK_LENGTH) // we still have space in this block
                 {
 
                     // write buffer to disk!
@@ -485,15 +466,15 @@ void OriginalRecording::writeData(int writeChannel, int realChannel, const float
                                           writeChannel);
 
                     //timestamp += numSamplesToWrite;
-                    samplesSinceLastTimestamp.set(realChannel, samplesSinceLastTimestamp[realChannel] + numSamplesToWrite);
-                    blockIndex.set(realChannel, blockIndex[realChannel] + numSamplesToWrite);
+					samplesSinceLastTimestamp.set(writeChannel, samplesSinceLastTimestamp[writeChannel] + numSamplesToWrite);
+					blockIndex.set(writeChannel, blockIndex[writeChannel] + numSamplesToWrite);
                     samplesWritten += numSamplesToWrite;
 
                 }
                 else   // there's not enough space left in this block for all remaining samples
                 {
 
-                    numSamplesToWrite = BLOCK_LENGTH - blockIndex[realChannel];
+					numSamplesToWrite = BLOCK_LENGTH - blockIndex[writeChannel];
 
                     // write buffer to disk!
                     writeContinuousBuffer(buffer + samplesWritten,
@@ -503,8 +484,8 @@ void OriginalRecording::writeData(int writeChannel, int realChannel, const float
                     // update our variables
                     samplesWritten += numSamplesToWrite;
                     //timestamp += numSamplesToWrite;
-                    samplesSinceLastTimestamp.set(realChannel, samplesSinceLastTimestamp[realChannel] + numSamplesToWrite);
-                    blockIndex.set(realChannel,0); // back to the beginning of the block
+					samplesSinceLastTimestamp.set(writeChannel, samplesSinceLastTimestamp[writeChannel] + numSamplesToWrite);
+					blockIndex.set(writeChannel, 0); // back to the beginning of the block
                 }
             }
 
@@ -513,13 +494,12 @@ void OriginalRecording::writeData(int writeChannel, int realChannel, const float
 
 void OriginalRecording::writeContinuousBuffer(const float* data, int nSamples, int writeChannel)
 {
-	int channel = getRealChannel(writeChannel);
     // check to see if the file exists
-    if (fileArray[channel] == nullptr)
+	if (fileArray[writeChannel] == nullptr)
         return;
 
     // scale the data back into the range of int16
-    float scaleFactor =  float(0x7fff) * getDataChannel(channel)->getBitVolts();
+    float scaleFactor =  float(0x7fff) * getDataChannel(getRealChannel(writeChannel))->getBitVolts();
 
     for (int n = 0; n < nSamples; n++)
     {
@@ -527,9 +507,9 @@ void OriginalRecording::writeContinuousBuffer(const float* data, int nSamples, i
     }
     AudioDataConverters::convertFloatToInt16BE(continuousDataFloatBuffer, continuousDataIntegerBuffer, nSamples);
 
-    if (blockIndex[channel] == 0)
+	if (blockIndex[writeChannel] == 0)
     {
-        writeTimestampAndSampleCount(fileArray[channel], writeChannel);
+		writeTimestampAndSampleCount(fileArray[writeChannel], writeChannel);
     }
 
     diskWriteLock.enter();
@@ -537,7 +517,7 @@ void OriginalRecording::writeContinuousBuffer(const float* data, int nSamples, i
     size_t count = fwrite(continuousDataIntegerBuffer, // ptr
                           2,                               // size of each element
                           nSamples,                        // count
-                          fileArray[channel]); // ptr to FILE object
+						  fileArray[writeChannel]); // ptr to FILE object
 
     //std::cout << channel << " : " << nSamples << " : " << count << std::endl;
 
@@ -546,9 +526,9 @@ void OriginalRecording::writeContinuousBuffer(const float* data, int nSamples, i
 
     diskWriteLock.exit();
 
-    if (blockIndex[channel] + nSamples == BLOCK_LENGTH)
+	if (blockIndex[writeChannel] + nSamples == BLOCK_LENGTH)
     {
-        writeRecordMarker(fileArray[channel]);
+		writeRecordMarker(fileArray[writeChannel]);
     }
 }
 
@@ -605,13 +585,13 @@ void OriginalRecording::closeFiles()
                 writeContinuousBuffer(zeroBuffer.getReadPointer(0), BLOCK_LENGTH - blockIndex[i], i);
                 diskWriteLock.enter();
                 fclose(fileArray[i]);
-                fileArray.set(i,nullptr);
                 diskWriteLock.exit();
             }
         }
-
-        blockIndex.set(i,0);
     }
+	fileArray.clear();
+	blockIndex.clear();
+	samplesSinceLastTimestamp.clear();
     for (int i = 0; i < spikeFileArray.size(); i++)
     {
         if (spikeFileArray[i] != nullptr)
diff --git a/Source/Processors/RecordNode/OriginalRecording.h b/Source/Processors/RecordNode/OriginalRecording.h
index e417a1b708a9010918753dd7f09917b679205dc5..3730992ec2d91d1e0aef513f8eedc5b6fb7849aa 100644
--- a/Source/Processors/RecordNode/OriginalRecording.h
+++ b/Source/Processors/RecordNode/OriginalRecording.h
@@ -50,8 +50,6 @@ public:
 	void closeFiles() override;
 	void writeData(int writeChannel, int realChannel, const float* buffer, int size) override;
 	void writeEvent(int eventIndex, const MidiMessage& event) override;
-	void registerProcessor(const GenericProcessor* proc) override;
-	void addDataChannel(int index, const DataChannel* chan) override;
 	void resetChannels() override;
 	void addSpikeElectrode(int index, const SpikeChannel* elec) override;
 	void writeSpike(int electrodeIndex, const SpikeEvent* spike) override;
diff --git a/open-ephys.jucer b/open-ephys.jucer
index 231a3cc5c90f8d1b288aafc42b8bcd70940bd0a6..80a6aa56695f4153c7e2d28fcf20b8cf47f8d394 100644
--- a/open-ephys.jucer
+++ b/open-ephys.jucer
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<JUCERPROJECT id="ynSYIrr" name="open-ephys" projectType="guiapp" version="0.4.2"
+<JUCERPROJECT id="ynSYIrr" name="open-ephys" projectType="guiapp" version="0.4.2.1"
               juceLinkage="amalg_multi" buildVST="1" buildRTAS="0" buildAU="1"
               pluginName="Juce Project" pluginDesc="Juce Project" pluginManufacturer="yourcompany"
               pluginManufacturerCode="Manu" pluginCode="Plug" pluginChannelConfigs="{1, 1}, {2, 2}"