diff --git a/Source/Processors/ChannelMappingNode.cpp b/Source/Processors/ChannelMappingNode.cpp
index 05e691e6522f18f673b43dd9b453aa680644bd6b..419d4c0c5a03a7c47a4ab6bce131729fa80f654d 100644
--- a/Source/Processors/ChannelMappingNode.cpp
+++ b/Source/Processors/ChannelMappingNode.cpp
@@ -52,7 +52,8 @@ AudioProcessorEditor* ChannelMappingNode::createEditor()
 
 void ChannelMappingNode::updateSettings()
 {
-	channelBuffer.setSize(getNumInputs(), 10000);
+	if (getNumInputs() > 0)
+		channelBuffer.setSize(getNumInputs(), 10000);
 }
 
 
@@ -90,7 +91,7 @@ void ChannelMappingNode::process(AudioSampleBuffer& buffer,
                        channelArray[i], // sourceChannel
                        0, // sourceStartSample
                        nSamples, // numSamples
-                       1.0f // gain to apply to source (positive)
+                       1.0f // gain to apply to source (positive for original signal)
                        );
 
 	}
diff --git a/Source/Processors/Editors/ChannelMappingEditor.cpp b/Source/Processors/Editors/ChannelMappingEditor.cpp
index 6a2d946419be5598b784db0bebae227f11327720..4f7faf24396ee598c6d1427456c8e56e1c8f1e5d 100644
--- a/Source/Processors/Editors/ChannelMappingEditor.cpp
+++ b/Source/Processors/Editors/ChannelMappingEditor.cpp
@@ -34,18 +34,17 @@ ChannelMappingEditor::ChannelMappingEditor(GenericProcessor* parentNode, bool us
 {
     desiredWidth = 340;
 
-    ElectrodeEditorButton* e1 = new ElectrodeEditorButton("MAPPING",Font("Small Text",14,Font::plain));
-    e1->addListener(this);
-    addAndMakeVisible(e1);
-    e1->setBounds(15,110,80,10);
-    e1->setToggleState(true, false);
-    electrodeEditorButtons.add(e1);
-
-    ElectrodeEditorButton* e2 = new ElectrodeEditorButton("REF",Font("Small Text",14,Font::plain));
-    e2->addListener(this);
-    addAndMakeVisible(e2);
-    e2->setBounds(100,110,50,10);
-    electrodeEditorButtons.add(e2);
+    mappingButton = new ElectrodeEditorButton("MAPPING",Font("Small Text",14,Font::plain));
+    mappingButton->addListener(this);
+    addAndMakeVisible(mappingButton);
+    mappingButton->setBounds(15,110,80,10);
+    mappingButton->setToggleState(true, false);
+
+    referenceButton = new ElectrodeEditorButton("REF",Font("Small Text",14,Font::plain));
+    referenceButton->addListener(this);
+    addAndMakeVisible(referenceButton);
+    referenceButton->setBounds(100,110,50,10);
+    referenceButton->setToggleState(false, false);
 
     channelSelector->setRadioStatus(true);
 
@@ -104,7 +103,7 @@ void ChannelMappingEditor::createElectrodeButtons(int numNeeded)
 
         channelArray.add(i+1);
 
-        if (column%16 == 0)
+        if (column % 16 == 0)
         {
             column = 0;
             row++;
@@ -119,28 +118,34 @@ void ChannelMappingEditor::createElectrodeButtons(int numNeeded)
 void ChannelMappingEditor::buttonEvent(Button* button)
 {
 
-	if (button == electrodeEditorButtons[0]) // mapping
+	if (button == mappingButton) // mapping
 	{
+        std::cout << "Mapping button clicked." << std::endl;
 
-		electrodeEditorButtons[1]->setToggleState(false, false);
+		referenceButton->setToggleState(false, false);
+        mappingButton->setToggleState(true, false);
 
 		for (int i = 0; i < electrodeButtons.size(); i++)
 		{
 			electrodeButtons[i]->setRadioGroupId(999);
 			electrodeButtons[i]->setChannelNum(channelArray[i]);
-			 electrodeButtons[i]->repaint();
+			electrodeButtons[i]->repaint();
 		}
 
 	}
-	 else if (button == electrodeEditorButtons[1]) // reference
+	 else if (button == referenceButton) // reference
 	{
-		electrodeEditorButtons[0]->setToggleState(false, false);
+
+        std::cout << "Reference button clicked." << std::endl;
+
+		mappingButton->setToggleState(false, false);
+        referenceButton->setToggleState(true, false);
 
 		for (int i = 0; i < electrodeButtons.size(); i++)
 		{
 			electrodeButtons[i]->setRadioGroupId(0);
 			electrodeButtons[i]->setChannelNum(referenceArray[i]);
-			 electrodeButtons[i]->repaint();
+			electrodeButtons[i]->repaint();
 		}
 
 
@@ -161,6 +166,9 @@ void ChannelMappingEditor::buttonEvent(Button* button)
 
 	}
 
+    std::cout << "Reference button state: " << referenceButton->getToggleState() << std::endl;
+    std::cout << "Mapping button state: " << mappingButton->getToggleState() << std::endl;
+
 }
 
 void ChannelMappingEditor::channelChanged(int chan)
@@ -174,7 +182,7 @@ void ChannelMappingEditor::channelChanged(int chan)
 
             getProcessor()->setCurrentChannel(i);
 
-            if (electrodeEditorButtons[1]->getToggleState()) // reference
+            if (referenceButton->getToggleState()) // reference
             {
             	referenceArray.set(i,chan);
 
diff --git a/Source/Processors/Editors/ChannelMappingEditor.h b/Source/Processors/Editors/ChannelMappingEditor.h
index 0ddde7119fa9aea18d4446c3db8ae0f5964f6b0a..46b7a499d8f9e453cccf8f63cafbab403e3c538a 100644
--- a/Source/Processors/Editors/ChannelMappingEditor.h
+++ b/Source/Processors/Editors/ChannelMappingEditor.h
@@ -60,7 +60,8 @@ public:
 private:
 
  	OwnedArray<ElectrodeButton> electrodeButtons;
- 	OwnedArray<ElectrodeEditorButton> electrodeEditorButtons;
+ 	ScopedPointer<ElectrodeEditorButton> referenceButton;
+ 	ScopedPointer<ElectrodeEditorButton> mappingButton;
 
  	Array<int> channelArray;
  	Array<int> referenceArray;