diff --git a/Source/Audio/AudioComponent.cpp b/Source/Audio/AudioComponent.cpp
index 0d968d76117255a1e03e33f79688da7659352322..9942ff1476a20e2e480247cdf180fb32eea5118c 100644
--- a/Source/Audio/AudioComponent.cpp
+++ b/Source/Audio/AudioComponent.cpp
@@ -104,14 +104,14 @@ bool AudioComponent::callbacksAreActive() {
 
 void AudioComponent::restartDevice()
 {
-	//deviceManager.restartLastAudioDevice();
+	deviceManager.restartLastAudioDevice();
 
 }
 
 void AudioComponent::stopDevice()
 {
 
-	//deviceManager.closeAudioDevice();
+	deviceManager.closeAudioDevice();
 }
 
 void AudioComponent::beginCallbacks() {
diff --git a/Source/Processors/ProcessorGraph.cpp b/Source/Processors/ProcessorGraph.cpp
index 98eebd2322c1af9df412a339f7e0fb4dba939636..f2c20aff089a9e5d18524c0ba1ba36af83150db3 100644
--- a/Source/Processors/ProcessorGraph.cpp
+++ b/Source/Processors/ProcessorGraph.cpp
@@ -398,7 +398,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip
 		}
 
 		
-		sendActionMessage("New source node created.");
+		//sendActionMessage("New source node created.");
 		
 
 	} else if (processorType.equalsIgnoreCase("Filters")) {
@@ -417,7 +417,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip
 			processor = new SpikeDetector();
 		}
 
-		sendActionMessage("New filter node created.");
+		//sendActionMessage("New filter node created.");
 
 	} else if (processorType.equalsIgnoreCase("Utilities")) {
 
@@ -426,14 +426,14 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip
 			std::cout << "Creating a new splitter." << std::endl;
 			processor = new Splitter();
 
-			sendActionMessage("New splitter created.");
+			//sendActionMessage("New splitter created.");
 
 	 	} else if (subProcessorType.equalsIgnoreCase("Merger")) {
 	 		
 	 		std::cout << "Creating a new merger." << std::endl;
 			processor = new Merger();
 
-			sendActionMessage("New merger created.");
+			//sendActionMessage("New merger created.");
 
 	 	}
 
@@ -456,7 +456,7 @@ GenericProcessor* ProcessorGraph::createProcessorFromDescription(String& descrip
 			processor = new WiFiOutput();
 		}
 	
-		sendActionMessage("New sink created.");
+		//sendActionMessage("New sink created.");
 	}
 
 	return processor;
diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp
index 70849e95681fdb11aa4ccad284fb36d7dfadaca0..c9be9f08335e30a935ae6e52872da3a631f0f412 100644
--- a/Source/UI/ControlPanel.cpp
+++ b/Source/UI/ControlPanel.cpp
@@ -429,9 +429,10 @@ ControlPanel::ControlPanel(ProcessorGraph* graph_, AudioComponent* audio_) :
 		 									  "");
 	addChildComponent(filenameComponent);
 
-	startTimer(100);
-
-	
+	//diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace());
+	//diskMeter->repaint();
+	refreshMeters();
+	startTimer(5000); // update disk space every 10 seconds
 
 	setWantsKeyboardFocus(true);
 
@@ -557,10 +558,12 @@ void ControlPanel::buttonClicked(Button* button)
 		std::cout << "Record button pressed." << std::endl;
 		if (recordButton->getToggleState())
 		{
+
 			playButton->setToggleState(true,false);
 			graph->getRecordNode()->setParameter(1,10.0f);
 			masterClock->startRecording(); // turn on recording
 
+
 		} else {
 			graph->getRecordNode()->setParameter(0,10.0f); // turn off recording
 			masterClock->stopRecording();
@@ -598,6 +601,8 @@ void ControlPanel::buttonClicked(Button* button)
 				if (recordButton->getToggleState())
 					graph->getRecordNode()->setParameter(1,10.0f);
 				
+				stopTimer();
+				startTimer(250); // refresh every 250 ms
 				audio->beginCallbacks();
 				masterClock->start();
 			}
@@ -609,8 +614,10 @@ void ControlPanel::buttonClicked(Button* button)
 		if (audio->callbacksAreActive()) {
 			audio->endCallbacks();
 			graph->disableProcessors();
-			cpuMeter->updateCPU(0.0f);
+			refreshMeters();
 			masterClock->stop();
+			stopTimer();
+			startTimer(10000); // back to refresh every 10 seconds
 
 		}
 
@@ -630,7 +637,9 @@ void ControlPanel::disableCallbacks()
 		std::cout << "Disabling processors." << std::endl;
 		graph->disableProcessors();
 		std::cout << "Updating control panel." << std::endl;
-		cpuMeter->updateCPU(0.0f);
+		refreshMeters();
+		stopTimer();
+		startTimer(10000); // back to refresh every 10 seconds
 		
 	}
 
@@ -642,26 +651,35 @@ void ControlPanel::disableCallbacks()
 
 }
 
-void ControlPanel::actionListenerCallback(const String & msg)
-{
-	//std::cout << "Message Received." << std::endl;
-	if (playButton->getToggleState()) {
-		cpuMeter->updateCPU(audio->deviceManager.getCpuUsage());
-	}
+// void ControlPanel::actionListenerCallback(const String & msg)
+// {
+// 	//std::cout << "Message Received." << std::endl;
+// 	if (playButton->getToggleState()) {
+// 		cpuMeter->updateCPU(audio->deviceManager.getCpuUsage());
+// 	}
 
-	cpuMeter->repaint();
+// 	cpuMeter->repaint();
 
-	diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace());
-	diskMeter->repaint();
+// 	diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace());
+// 	diskMeter->repaint();
 	
 	
-}
+// }
 
 void ControlPanel::timerCallback()
 {
 	//std::cout << "Message Received." << std::endl;
+	
+	refreshMeters();
+	
+}
+
+void ControlPanel::refreshMeters()
+{
 	if (playButton->getToggleState()) {
 		cpuMeter->updateCPU(audio->deviceManager.getCpuUsage());
+	} else {
+		cpuMeter->updateCPU(0.0f);
 	}
 
 	cpuMeter->repaint();
@@ -670,8 +688,6 @@ void ControlPanel::timerCallback()
 
 	diskMeter->updateDiskSpace(graph->getRecordNode()->getFreeSpace());
 	diskMeter->repaint();
-	
-	
 }
 
 bool ControlPanel::keyPressed(const KeyPress& key)
diff --git a/Source/UI/ControlPanel.h b/Source/UI/ControlPanel.h
index 394a0ce662e77f8c522cdf789d80903896184f4c..04235a79be41ae8f7b16a8be41af1ec96879035a 100644
--- a/Source/UI/ControlPanel.h
+++ b/Source/UI/ControlPanel.h
@@ -209,7 +209,7 @@ class UtilityButton;
 
 class ControlPanel : public Component, 
 					 public Button::Listener,
-					 public ActionListener,
+					// public ActionListener,
 					 public Timer,
 					 public AccessClass
 
@@ -247,11 +247,12 @@ private:
 	void resized();
 	void buttonClicked(Button* button);
 
-	void actionListenerCallback(const String& msg);
+	//void actionListenerCallback(const String& msg);
 
 	void updateChildComponents();
 
 	void timerCallback();
+	void refreshMeters();
 
 	bool keyPressed(const KeyPress &key);
 
diff --git a/Source/UI/UIComponent.cpp b/Source/UI/UIComponent.cpp
index b82b9fb45ec23a936ba6cde9c50a68e99b78b36f..ddedc347cd02f3fb2f3f0ba977d756d0520fcebf 100644
--- a/Source/UI/UIComponent.cpp
+++ b/Source/UI/UIComponent.cpp
@@ -228,9 +228,13 @@ const PopupMenu UIComponent::getMenuForIndex(int menuIndex, const String& menuNa
      {
      	menu.addCommandItem (commandManager, openConfiguration);
         menu.addCommandItem (commandManager, saveConfiguration);
-        menu.addSeparator();
-        menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit);
-     } else if (menuIndex == 1)
+        
+#if !JUCE_MAC
+       	menu.addSeparator();
+       	menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit);
+#endif
+
+       } else if (menuIndex == 1)
      {
      	menu.addCommandItem (commandManager, undo);
      	menu.addCommandItem (commandManager, redo);