diff --git a/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.cpp b/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.cpp
index 8444f842e2d7d50f49915c5d26f48be2a0069804..1edba9fd1a1bf36dfce9422203f8bd9cc00c7126 100644
--- a/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.cpp
+++ b/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.cpp
@@ -211,7 +211,7 @@ void SpikeDisplayEditor::stopRecording()
 
 // }
 
-void SpikeDisplayEditor::buttonCallback(Button* button)
+void SpikeDisplayEditor::buttonEvent(Button* button)
 {
     //std::cout<<"Got event from component:"<<button<<std::endl;
 
diff --git a/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.h b/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.h
index 408aa999c0ad53913206ed885aa4a171df979dab..bd6d30935c7ccd1360fabe84f296eb086633acdf 100644
--- a/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.h
+++ b/Source/Plugins/BasicSpikeDisplay/SpikeDisplayNode/SpikeDisplayEditor.h
@@ -48,7 +48,7 @@ public:
     SpikeDisplayEditor(GenericProcessor*);
     ~SpikeDisplayEditor();
 
-    void buttonCallback(Button* button);
+    void buttonEvent(Button* button);
 
     void startRecording();
     void stopRecording();
diff --git a/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.cpp b/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.cpp
index cf75ba71b2915b523a32de968c977572cb8c947a..756684a976faab62cb1aa4913aa15426d57f2793 100644
--- a/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.cpp
+++ b/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.cpp
@@ -48,7 +48,8 @@ Visualizer* LfpDisplayEditor::createNewCanvas()
 
 }
 
-void LfpDisplayEditor::buttonCallback(Button* button)
+// not really being used (yet) ...
+void LfpDisplayEditor::buttonEvent(Button* button)
 {
 
     int gId = button->getRadioGroupId();
diff --git a/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.h b/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.h
index 6c5f65667a1a2216021a22227b97ab32192b3d2f..af2e22f7a1a29a0e4e7433761fb8110da65da390 100644
--- a/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.h
+++ b/Source/Plugins/LfpDisplayNode/LfpDisplayEditor.h
@@ -44,7 +44,8 @@ public:
     LfpDisplayEditor(GenericProcessor*, bool useDefaultParameterEditors);
     ~LfpDisplayEditor();
 
-    void buttonCallback(Button* button);
+    // not really being used (yet) ...
+    void buttonEvent(Button* button);
 
     Visualizer* createNewCanvas();
 
diff --git a/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.cpp b/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.cpp
index 6f4d5aacf0e0ba20d972f9c34151d5271f6ea562..5e7cfeb7d21b52809d111568f6b913b5928f61a2 100644
--- a/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.cpp
+++ b/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.cpp
@@ -50,11 +50,12 @@ Visualizer* LfpDisplayEditor::createNewCanvas()
 
 }
 
-void LfpDisplayEditor::buttonCallback(Button* button)
+// not really being used (yet)...
+void LfpDisplayEditor::buttonEvent(Button* button)
 {
 
     int gId = button->getRadioGroupId();
-
+    std::cout<<"sfwef\n";
     if (gId > 0)
     {
         if (canvas != 0)
diff --git a/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.h b/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.h
index 557512fddc4e76c8250fd95f080e8974cff9b057..d5106d3e5879d29029f9653356a0393cd4cb4fbe 100644
--- a/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.h
+++ b/Source/Plugins/LfpDisplayNodeBeta/LfpDisplayEditor.h
@@ -51,7 +51,8 @@ public:
     LfpDisplayEditor(GenericProcessor*, bool useDefaultParameterEditors);
     ~LfpDisplayEditor();
 
-    void buttonCallback(Button* button);
+    // not really being used (yet) ...
+    void buttonEvent(Button* button);
 
     Visualizer* createNewCanvas();
 
diff --git a/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp b/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp
index e37d118f187f5a8143b4bde38e44a466022231f0..eef8bcc2f8d4734d752c887d62d83ffbcb1292c8 100644
--- a/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp
+++ b/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.cpp
@@ -47,7 +47,8 @@ Visualizer* LfpTriggeredAverageEditor::createNewCanvas()
 
 }
 
-void LfpTriggeredAverageEditor::buttonCallback(Button* button)
+// not really being used (yet) ...
+void LfpTriggeredAverageEditor::buttonEvent(Button* button)
 {
 
     int gId = button->getRadioGroupId();
diff --git a/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h b/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h
index 09c37708b529fb8d6847cacf823918c12427420c..d29108d4f069d48c4d5315ee62e26bb0e8aa11ea 100644
--- a/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h
+++ b/Source/Plugins/LfpTriggeredAverageNode/LfpTriggeredAverageEditor.h
@@ -49,7 +49,8 @@ public:
     LfpTriggeredAverageEditor(GenericProcessor*, bool useDefaultParameterEditors);
     ~LfpTriggeredAverageEditor();
 
-    void buttonCallback(Button* button);
+    // not really being used (yet) ...
+    void buttonEvent(Button* button);
 
     Visualizer* createNewCanvas();
 
diff --git a/Source/Plugins/PCIeRhythm/RHD2000Editor.cpp b/Source/Plugins/PCIeRhythm/RHD2000Editor.cpp
index e8292c0642844e16b044d5cd1b5d39bb72157c49..38fc6451dd87e5cedeef69c65f478dad731b8087 100644
--- a/Source/Plugins/PCIeRhythm/RHD2000Editor.cpp
+++ b/Source/Plugins/PCIeRhythm/RHD2000Editor.cpp
@@ -858,10 +858,12 @@ void RHD2000Editor::buttonEvent(Button* button)
 	{
 		board->enableBoardLeds(button->getToggleState());
 	}
+    /*
 	else
 	{
 		VisualizerEditor::buttonEvent(button);
 	}
+    */
 
 }
 
diff --git a/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp b/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp
index bf4bff7e8ac50b7c7878c46919eaf6ecdad37086..b76a7076920bb9bd9443f6ae225d9a1370cb58bd 100644
--- a/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp
+++ b/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp
@@ -229,7 +229,7 @@ void SpikeSorterEditor::sliderEvent(Slider* slider)
 
 void SpikeSorterEditor::buttonEvent(Button* button)
 {
-    VisualizerEditor::buttonEvent(button);
+    //VisualizerEditor::buttonEvent(button);
     SpikeSorter* processor = (SpikeSorter*) getProcessor();
 
     if (electrodeButtons.contains((ElectrodeButton*) button))
diff --git a/Source/Processors/DataThreads/RhythmNode/RHD2000Editor.cpp b/Source/Processors/DataThreads/RhythmNode/RHD2000Editor.cpp
index cc87903c33c9797b58dce989e256fa5f7c66161e..5aeb37d65a9c3dd4bd0c4a7b9a04f251c485df3e 100644
--- a/Source/Processors/DataThreads/RhythmNode/RHD2000Editor.cpp
+++ b/Source/Processors/DataThreads/RhythmNode/RHD2000Editor.cpp
@@ -860,10 +860,12 @@ void RHD2000Editor::buttonEvent(Button* button)
 	{
 		board->enableBoardLeds(button->getToggleState());
 	}
+    /*
 	else
 	{
 		VisualizerEditor::buttonEvent(button);
 	}
+    */
 
 }
 
diff --git a/Source/Processors/Editors/VisualizerEditor.cpp b/Source/Processors/Editors/VisualizerEditor.cpp
index 758ae385c750a73fb86ed8b9463e00ab6de2a213..a56dff4590ab843893294a54495c2d4e4a51cb8a 100755
--- a/Source/Processors/Editors/VisualizerEditor.cpp
+++ b/Source/Processors/Editors/VisualizerEditor.cpp
@@ -121,8 +121,8 @@ VisualizerEditor::~VisualizerEditor()
 
 }
 
-// All addition buttons inside the VisualizerEditor should use this callback instead of buttonEvent()
-void VisualizerEditor::buttonCallback(Button* button) {}
+// All additional buttons inside the VisualizerEditor should use this instead of buttonClicked()
+void VisualizerEditor::buttonEvent(Button* button) {}
 
 void VisualizerEditor::enable()
 {
@@ -161,9 +161,16 @@ void VisualizerEditor::editorWasClicked()
 }
 
 // This method is used to open the visualizer in a tab or window; do not use for sub-classes of VisualizerEditor
-void VisualizerEditor::buttonEvent(Button* button)
+// Use VisualizerEditor::buttonEvent instead
+void VisualizerEditor::buttonClicked(Button* button)
 {
+    // To handle default buttons, like the Channel Selector Drawer.
+    GenericEditor::buttonClicked(button);
 
+    // I think this must also be removed. If the user wants to keep buttons which send parameters to
+    // the canvas, it will be conceptually easier for him to handle everything on his/her own -- in
+    // the buttonEvent method. Implementing this half interface is actually confusing (for a newbie
+    // atleast)
     int gId = button->getRadioGroupId();
 
     if (gId > 0)
@@ -176,7 +183,7 @@ void VisualizerEditor::buttonEvent(Button* button)
     }
     else
     {
-
+        // handling the canvas "SelectorButtons" -- the ones which open the canvas.
         if (canvas == nullptr)
         {
 
@@ -251,8 +258,11 @@ void VisualizerEditor::buttonEvent(Button* button)
 
     }
 
-    buttonCallback(button);
+    // Pass the button event along to subclasses.
+    buttonEvent(button);
 
+    /* This is no longer needed I think, because it is handled in the GenericEditor::buttonClicked method. */
+    /*
     if (button == drawerButton)
     {
         std::cout<<"Drawer button clicked"<<std::endl;
@@ -260,7 +270,7 @@ void VisualizerEditor::buttonEvent(Button* button)
         tabSelector->setBounds(desiredWidth - 20,7,15,10);
 
     }
-
+    */
 }
 
 void VisualizerEditor::saveCustomParameters(XmlElement* xml)
diff --git a/Source/Processors/Editors/VisualizerEditor.h b/Source/Processors/Editors/VisualizerEditor.h
index b20063c5403d6dca5c4daa987cd9bc898aa51af9..dbf876746d515fc7bca0388db260331e6fba27d3 100755
--- a/Source/Processors/Editors/VisualizerEditor.h
+++ b/Source/Processors/Editors/VisualizerEditor.h
@@ -52,26 +52,53 @@ private:
 
 
 /**
-
+  @brief
   Base class for creating editors with visualizers.
-
+  
+  @details
+  Automatically adds buttons (and their handlers) which open the canvas in a window or
+  a tab. Just like any other editor, do not override VisualizerEditor::buttonClicked.
   @see GenericEditor, Visualizer
-
+  
+  If you must add buttons to your editor, handle them by overiding VisualizerEditor::buttonEvent
+  @sa         RHD2000Editor, PCIeRhythm::RHD2000Editor
 */
 
 class PLUGIN_API VisualizerEditor : public GenericEditor
 {
 public:
-    VisualizerEditor(GenericProcessor*, int, bool useDefaultParameterEditors);
-    VisualizerEditor(GenericProcessor*, bool useDefaultParameterEditors);
+    /**
+     * @brief      Prefer this constructor to properly "size" the editor widget.
+     * @details    Unlike other editors, setting GenericEditor::desiredWidth
+     * @code{cpp}
+     *   desiredWidth = <width-that-you-need>;
+     * @endcode
+     * will not work.
+     *
+     * @param      processor                   The processor
+     * @param[in]  desired_width               The desired width
+     * @param[in]  useDefaultParameterEditors  ``true`` if you want a _default_ editor.
+     */
+    VisualizerEditor(GenericProcessor* processor, int desired_width, bool useDefaultParameterEditors);
+
+    VisualizerEditor(GenericProcessor* processor, bool useDefaultParameterEditors);
     ~VisualizerEditor();
 
-	// WARNING: This method is used to open the visualizer in a tab or window; do not use for sub-classes of VisualizerEditor
-    void buttonEvent(Button* button);
+	/**
+     * @brief      This method handles the button evnets which open visualizer in a tab or window.
+     * @warning    Do not override this function unless you call ``VisualizerEditor::buttonClicked``
+     *             somewhere!
+     */
+    void buttonClicked(Button* button);
 	
-	// All addition buttons inside the VisualizerEditor should use this callback instead of buttonEvent()
-	virtual void buttonCallback(Button* button);
-
+	/**
+     * @brief      All additional buttons that you create _for the editor_ should be handled here.
+     */
+	virtual void buttonEvent(Button* button);
+
+    /**
+     * @brief      Creates a new canvas. This is like a factory method and must be defined in your sub-class.
+     */
     virtual Visualizer* createNewCanvas() = 0;
 
     virtual void enable();
diff --git a/Source/Processors/PSTH/PeriStimulusTimeHistogramEditor.cpp b/Source/Processors/PSTH/PeriStimulusTimeHistogramEditor.cpp
index 8215baa1e33e5ddf66e5243512317bf6bb2e2418..5547a69026336ee49823fec3a0a12ff18e4aefd5 100644
--- a/Source/Processors/PSTH/PeriStimulusTimeHistogramEditor.cpp
+++ b/Source/Processors/PSTH/PeriStimulusTimeHistogramEditor.cpp
@@ -262,7 +262,7 @@ void PeriStimulusTimeHistogramEditor::visualizationMenu()
 
 void PeriStimulusTimeHistogramEditor::buttonEvent(Button* button)
 {
-    VisualizerEditor::buttonEvent(button);
+    //VisualizerEditor::buttonEvent(button);
     if (periStimulusTimeHistogramCanvas == nullptr)
         return;