diff --git a/linux/tray-menu.cpp b/linux/tray-menu.cpp
index db3d79e..db4b321 100644
--- a/linux/tray-menu.cpp
+++ b/linux/tray-menu.cpp
@@ -251,7 +251,8 @@
     trayIconMenu->addAction(open);
 
     close = new QAction("Quit...", this);
-    connect(close, SIGNAL(triggered()), this, SLOT(confirmQuit()));
+    // connect(close, SIGNAL(triggered()), this, SLOT(confirmQuit()));
+    connect(close, SIGNAL(triggered()), qApp, SLOT(quit()));
     trayIconMenu->addAction(close);
 
     trayIcon = new QSystemTrayIcon(this);
@@ -335,24 +336,24 @@
     process->start(NDND_FIB_COMMAND, arguments);
 }
 
-void TrayMenu::confirmQuit()
-{
-    if(shutdownOnExit)
-        terminateDaemonAndClose();
-    else
-    {
-        QuitDialog dialog(this);
-        dialog.exec();
-    }
-}
+// void TrayMenu::confirmQuit()
+// {
+//     if(shutdownOnExit)
+//         terminateDaemonAndClose();
+//     else
+//     {
+//         QuitDialog dialog(this);
+//         dialog.exec();
+//     }
+// }
 
-void TrayMenu::terminateDaemonAndClose()
-{
-    QProcess *process = new QProcess(this);
-    process->start(NDND_STOP_COMMAND);
-    connect(process,SIGNAL(finished(int)), qApp, SLOT(quit()));
-    connect(process,SIGNAL(finished(int)), process, SLOT(deleteLater()));
-}
+// void TrayMenu::terminateDaemonAndClose()
+// {
+//     QProcess *process = new QProcess(this);
+//     process->start(NDND_STOP_COMMAND);
+//     connect(process,SIGNAL(finished(int)), qApp, SLOT(quit()));
+//     connect(process,SIGNAL(finished(int)), process, SLOT(deleteLater()));
+// }
 
 void TrayMenu::closeEvent(QCloseEvent *event)
 {
@@ -424,14 +425,14 @@
     {
         daemonStarted = false;
         setIcon(false);
-        statusIndicator->setText("Starting...");
+        statusIndicator->setText("Inactive");
 
-        QProcess *process = new QProcess();
-        if(enableHubDiscovery)
-            connect(process, SIGNAL(finished(int)), networkManager, SLOT(autoconfigDaemon()));
-
-        connect(process,SIGNAL(finished(int)), process, SLOT(deleteLater()));
-        process->start(NDND_START_COMMAND);
+        // QProcess *process = new QProcess();
+        // if(enableHubDiscovery)
+        //     connect(process, SIGNAL(finished(int)), networkManager, SLOT(autoconfigDaemon()));
+        // 
+        // connect(process,SIGNAL(finished(int)), process, SLOT(deleteLater()));
+        // process->start(NDND_START_COMMAND);
     }
     else
     {
diff --git a/linux/tray-menu.h b/linux/tray-menu.h
index 740004d..fa28471 100644
--- a/linux/tray-menu.h
+++ b/linux/tray-menu.h
@@ -113,9 +113,9 @@
     void openRoutingStatus();
     void openCertificationPage();
     void displayPopup();
-    void confirmQuit();
+    // void confirmQuit();
     void showFibInputDialog();
-    void terminateDaemonAndClose();
+    // void terminateDaemonAndClose();
     void addFibEntry();
     void daemonStatusUpdate();
     void selectTableRow();
diff --git a/wscript b/wscript
index 3ee0110..3f84b0e 100644
--- a/wscript
+++ b/wscript
@@ -27,13 +27,14 @@
         conf.end_msg ('ok')
 
     conf.define('NDNX_ROOT', conf.options.ndnx_root)
-    conf.define('NDND_START_COMMAND', '%s/bin/ndndstart' % conf.options.ndnx_root)
-    conf.define('NDND_STOP_COMMAND', '%s/bin/ndndstop' % conf.options.ndnx_root)
     conf.define('NDND_STATUS_COMMAND', '%s/bin/ndndsmoketest' % conf.options.ndnx_root)
     conf.define('NDND_FIB_COMMAND',  '%s/bin/ndndc' % conf.options.ndnx_root)
     conf.define('NDND_AUTOCONFIG_COMMAND', '%s/bin/ndnd-autoconfig' % conf.options.ndnx_root)
     
     if Utils.unversioned_sys_platform () == "darwin" and not conf.options.build_qt:
+        conf.define('NDND_START_COMMAND', '%s/bin/ndndstart' % conf.options.ndnx_root)
+        conf.define('NDND_STOP_COMMAND', '%s/bin/ndndstop' % conf.options.ndnx_root)
+
         conf.env.BUILD_OSX_NATIVE = 1
         
         conf.find_program('ibtool', var='IBTOOL', mandatory=False)
