diff --git a/Source/Processors/AudioNode.cpp b/Source/Processors/AudioNode.cpp
index 5ba800e766c419c4d94359f1ede1bdd68ab6d209..d513370f2610fb422f7799ffbddf0fba43d6e70c 100644
--- a/Source/Processors/AudioNode.cpp
+++ b/Source/Processors/AudioNode.cpp
@@ -25,7 +25,7 @@
 #include "AudioNode.h"
 
 AudioNode::AudioNode()
-	: GenericProcessor("Audio Node"), volume(5.0f)
+	: GenericProcessor("Audio Node"), volume(5.0f), audioEditor(0)
 {
 
 	numInputs = 64;
@@ -45,16 +45,18 @@ AudioNode::AudioNode()
 
 AudioNode::~AudioNode() {
 
+
+
 }
 
 AudioProcessorEditor* AudioNode::createEditor()
 {
 	
-	AudioEditor* editor = new AudioEditor(this);
+	audioEditor = new AudioEditor(this);
 
-	setEditor(editor);
+	//setEditor(editor);
 	
-	return editor; 
+	return audioEditor; 
 
 }
 
diff --git a/Source/Processors/AudioNode.h b/Source/Processors/AudioNode.h
index ad8c07ef5a5b57d3e1bb69689cd41524302063da..6040c43d0699bd2c9cbbdd6e0da088ef3fda7c32 100644
--- a/Source/Processors/AudioNode.h
+++ b/Source/Processors/AudioNode.h
@@ -41,6 +41,8 @@
 
 */
 
+class AudioEditor;
+
 class AudioNode : public GenericProcessor
 {
 public:
@@ -53,6 +55,8 @@ public:
 	void setParameter (int parameterIndex, float newValue);
 
 	AudioProcessorEditor* createEditor();
+
+    ScopedPointer<AudioEditor> audioEditor;
 	
 private:
 
diff --git a/Source/Processors/EventNode.cpp b/Source/Processors/EventNode.cpp
index e1bba9c700c918db70fc4b9ca937964e22123e52..59ddf59440225100b53618a6fd0ee0e310b47796 100644
--- a/Source/Processors/EventNode.cpp
+++ b/Source/Processors/EventNode.cpp
@@ -41,8 +41,8 @@ EventNode::~EventNode()
 
 AudioProcessorEditor* EventNode::createEditor()
 {
-	EventNodeEditor* editor = new EventNodeEditor(this);
-	setEditor(editor);
+	editor = new EventNodeEditor(this);
+	//setEditor(editor);
 
 	std::cout << "Creating editor." << std::endl;
 
diff --git a/Source/Processors/FilterNode.cpp b/Source/Processors/FilterNode.cpp
index fd8fb9e55d9f4ead7ec1905a0316664c98a29d71..e8526cf86ad89947b1f1c1997b614a36e3963f9a 100644
--- a/Source/Processors/FilterNode.cpp
+++ b/Source/Processors/FilterNode.cpp
@@ -39,12 +39,12 @@ FilterNode::~FilterNode()
 
 AudioProcessorEditor* FilterNode::createEditor()
 {
-	FilterEditor* filterEditor = new FilterEditor(this);
-	setEditor(filterEditor);
+	editor = new FilterEditor(this);
+	//setEditor(filterEditor);
 	
 	std::cout << "Creating editor." << std::endl;
 
-	return filterEditor;
+	return editor;
 }
 
 
diff --git a/Source/Processors/GenericProcessor.cpp b/Source/Processors/GenericProcessor.cpp
index 385d8a8d85afa3111ea89d31552806bbca339a07..2bee50b370f7d819373b9f56905db121bb840b91 100644
--- a/Source/Processors/GenericProcessor.cpp
+++ b/Source/Processors/GenericProcessor.cpp
@@ -24,20 +24,19 @@
 #include "GenericProcessor.h"
 #include "../UI/UIComponent.h"
 
-GenericProcessor::GenericProcessor(const String& name_) : name(name_),
-	sourceNode(0), destNode(0), editor(0), isEnabled(true), saveOrder(-1), loadOrder(-1),
-	nextAvailableChannel(0), wasConnected(false), currentChannel(-1)
-	
+GenericProcessor::GenericProcessor(const String& name_) : 
+    name(name_),
+	sourceNode(0), destNode(0),
+	isEnabled(true), 
+	saveOrder(-1), loadOrder(-1),
+	nextAvailableChannel(0), currentChannel(-1),
+	wasConnected(false)
 {
 
 }
 
 GenericProcessor::~GenericProcessor()
 {
-	if (editor != 0)
-	{
-		deleteAndZero(editor);
-	}
 }
 
 AudioProcessorEditor* GenericProcessor::createEditor()
diff --git a/Source/Processors/GenericProcessor.h b/Source/Processors/GenericProcessor.h
index 1612abe31703ec09ba94ce1a219f3672d5f59980..3889ee507a784c1f71392a8f589b2f703c4f738d 100644
--- a/Source/Processors/GenericProcessor.h
+++ b/Source/Processors/GenericProcessor.h
@@ -49,9 +49,9 @@
 class EditorViewport;
 class DataViewport;
 class UIComponent;
+class GenericEditor;
 
 class GenericProcessor : public AudioProcessor,
-						// public ActionBroadcaster,
 						 public AccessClass
 
 {
@@ -196,31 +196,10 @@ public:
 
 	// Getting and setting:
 
-	AudioProcessorEditor* getEditor() {return editor;}
-	void setEditor(AudioProcessorEditor* e) {editor = e;}
+	GenericEditor* getEditor() {return editor;}
+	//void setEditor(GenericEditor* e) {editor = e;}
 
-	// void setUIComponent(UIComponent* ui) {UI = ui;}
-	// UIComponent* getUIComponent() {return UI;}
-
-	// virtual void setConfiguration(Configuration* cf) {config = cf;}
-	// Configuration* getConfiguration() {return config;}
-
-	// void setFilterViewport(FilterViewport* vp) {viewport = vp;}
-	// FilterViewport* getFilterViewport() {return viewport;}
-
-	// void setDataViewport(DataViewport* dv) {dataViewport = dv;}
-	// DataViewport* getDataViewport() {return dataViewport;}
-
-
-	//FilterViewport* viewport;
-	//DataViewport* dataViewport;
-	//UIComponent* UI;
-
-	//Configuration* config;
-
-	//int tabA, tabB; // needed for Merger
-
-	AudioProcessorEditor* editor;
+	ScopedPointer<GenericEditor> editor;
 
 private:
 
diff --git a/Source/Processors/LfpDisplayNode.cpp b/Source/Processors/LfpDisplayNode.cpp
index 09935130a9b80c809756fbed06674ddf2c47cfb1..efc8841b38e11974e6d589f6b9b7165cb52e3a25 100644
--- a/Source/Processors/LfpDisplayNode.cpp
+++ b/Source/Processors/LfpDisplayNode.cpp
@@ -51,7 +51,7 @@ LfpDisplayNode::~LfpDisplayNode()
 AudioProcessorEditor* LfpDisplayNode::createEditor()
 {
 
-	LfpDisplayEditor* editor = new LfpDisplayEditor(this);
+	editor = new LfpDisplayEditor(this);
 
 	//editor->setBuffers (displayBuffer, eventBuffer);
 	//editor->setUIComponent (getUIComponent());
@@ -59,7 +59,7 @@ AudioProcessorEditor* LfpDisplayNode::createEditor()
 	//editor->updateNumInputs(getNumInputs());
 	//editor->updateSampleRate(sampleRate);
 
-	setEditor(editor);
+	//setEditor(editor);
 	
 	return editor;
 
diff --git a/Source/Processors/SignalGenerator.cpp b/Source/Processors/SignalGenerator.cpp
index 08093b35b4b8e70368bfb8d027252c8b3069240e..0b7740618f80f4d56a22033ac94eda6b4464eb26 100644
--- a/Source/Processors/SignalGenerator.cpp
+++ b/Source/Processors/SignalGenerator.cpp
@@ -62,12 +62,12 @@ SignalGenerator::~SignalGenerator()
 
 AudioProcessorEditor* SignalGenerator::createEditor( )
 {
-	SignalGeneratorEditor* ed = new SignalGeneratorEditor(this);
-	setEditor(ed);
+	editor = new SignalGeneratorEditor(this);
+	//setEditor(ed);
 	
-	std::cout << "Creating editor." << std::endl;
+	//std::cout << "Creating editor." << std::endl;
 	//filterEditor = new FilterEditor(this);
-	return ed;
+	return editor;
 }
 
 void SignalGenerator::updateParameters()
diff --git a/Source/Processors/SourceNode.cpp b/Source/Processors/SourceNode.cpp
index fdbd4e1340fd2f8a95e361fd86ddf25dca346beb..fc031adafb84e7e8938ebe7a5b25db5305f7cc41 100644
--- a/Source/Processors/SourceNode.cpp
+++ b/Source/Processors/SourceNode.cpp
@@ -139,11 +139,11 @@ void SourceNode::setParameter (int parameterIndex, float newValue)
 
 AudioProcessorEditor* SourceNode::createEditor()
 {
-	SourceNodeEditor* ed = new SourceNodeEditor(this);
-	setEditor(ed);
+	editor = new SourceNodeEditor(this);
+	//setEditor(ed);
 	
-	std::cout << "Creating editor." << std::endl;
-	return ed;
+//	std::cout << "Creating editor." << std::endl;
+	return editor;
 }
 
 void SourceNode::timerCallback()
diff --git a/Source/Processors/SpikeDetector.cpp b/Source/Processors/SpikeDetector.cpp
index ee47256cdad0bfe40a3b4b19134814eeb0ed6303..3eb899e2e963a685d328c5d294fa5d93a07861b4 100644
--- a/Source/Processors/SpikeDetector.cpp
+++ b/Source/Processors/SpikeDetector.cpp
@@ -44,11 +44,11 @@ SpikeDetector::~SpikeDetector()
 AudioProcessorEditor* SpikeDetector::createEditor()
 {
 
-	SpikeDetectorEditor* editor = new SpikeDetectorEditor(this);
+	editor = new SpikeDetectorEditor(this);
 	
-	std::cout << "Creating editor." << std::endl;
+	//std::cout << "Creating editor." << std::endl;
 
-    setEditor(editor);
+    //setEditor(editor);
 
 	return editor;
 }
diff --git a/Source/Processors/Utilities/Merger.cpp b/Source/Processors/Utilities/Merger.cpp
index 2ac4ae8121e3bd6fc81f90d49e52db2caa24d265..778ecd665dcbff778bee2b1de789adf9ceb511ec 100644
--- a/Source/Processors/Utilities/Merger.cpp
+++ b/Source/Processors/Utilities/Merger.cpp
@@ -43,10 +43,10 @@ Merger::~Merger()
 
 AudioProcessorEditor* Merger::createEditor()
 {
-	MergerEditor* editor = new MergerEditor(this);
-	setEditor(editor);
+	editor = new MergerEditor(this);
+	//tEditor(editor);
 	
-	std::cout << "Creating editor." << std::endl;
+	//std::cout << "Creating editor." << std::endl;
 	return editor;
 }
 
diff --git a/Source/Processors/Utilities/Splitter.cpp b/Source/Processors/Utilities/Splitter.cpp
index f259291f9e2a06bdbfb93a2128c95d806df1d577..32fa9e0f7497724f9c604212aa81d8911293ccd1 100644
--- a/Source/Processors/Utilities/Splitter.cpp
+++ b/Source/Processors/Utilities/Splitter.cpp
@@ -44,10 +44,10 @@ Splitter::~Splitter()
 
 AudioProcessorEditor* Splitter::createEditor()
 {
-	SplitterEditor* editor = new SplitterEditor(this);
-	setEditor(editor);
+	editor = new SplitterEditor(this);
+	//tEditor(editor);
 	
-	std::cout << "Creating editor." << std::endl;
+	//std::cout << "Creating editor." << std::endl;
 	return editor;
 }
 
diff --git a/Source/Processors/WiFiOutput.cpp b/Source/Processors/WiFiOutput.cpp
index d9fa1ba3f49100e35f0e92a7be6aec5532e13847..c84664285ddf34c709a38354fd9f1ea1e7fb4653 100644
--- a/Source/Processors/WiFiOutput.cpp
+++ b/Source/Processors/WiFiOutput.cpp
@@ -41,13 +41,13 @@ WiFiOutput::~WiFiOutput()
 
 AudioProcessorEditor* WiFiOutput::createEditor()
 {
-	WiFiOutputEditor* wifiEditor = new WiFiOutputEditor(this);
+	editor = new WiFiOutputEditor(this);
 	
-	setEditor(wifiEditor);
+	//setEditor(wifiEditor);
 	//wifiEditor->setConfiguration(config);
 
-	std::cout << "Creating editor." << std::endl;
-	return wifiEditor;
+	//std::cout << "Creating editor." << std::endl;
+	return editor;
 }