diff --git a/adhoc/adhoc-osx.mm b/adhoc/adhoc-osx.mm
index 107e230..3b7da80 100644
--- a/adhoc/adhoc-osx.mm
+++ b/adhoc/adhoc-osx.mm
@@ -99,6 +99,13 @@
   CWInterface *airport = [CWInterface interfaceWithName:interfaceName];
 
   [airport disassociate];
+
+  NSError *err;
+  [airport setPower:NO error:&err];
+  [airport setPower:YES error:&err];
+
+  // ok. this trick works.  if just disassociate, then it will stay OFF
+  // setting power OFF/ON trick the system to reconnect to default WiFi
 }
 
 #endif // ADHOC_SUPPORTED
diff --git a/gui/chronosharegui.cpp b/gui/chronosharegui.cpp
index 04ddc13..cbcafe2 100644
--- a/gui/chronosharegui.cpp
+++ b/gui/chronosharegui.cpp
@@ -16,9 +16,13 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Jared Lindblom <lindblom@cs.ucla.edu>
+ *         Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ *         Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ *         Ilya Moiseenko <iliamo@ucla.edu>
  */
 
 #include "chronosharegui.h"
+
 #include "logging.h"
 #include "ccnx-wrapper.h"
 #include <QValidator>
@@ -34,8 +38,10 @@
   : QDialog(parent)
   , m_watcher(0)
   , m_dispatcher(0)
+#ifdef ADHOC_SUPPORTED
+  , m_executor (1)
+#endif
 {
-
   setWindowTitle("Settings");
 
   labelUsername = new QLabel("Username (hint: /<username>)");
@@ -103,6 +109,10 @@
     {
       startBackend();
     }
+
+#ifdef ADHOC_SUPPORTED
+  m_executor.start ();
+#endif
 }
 
 void
@@ -124,12 +134,19 @@
 
 ChronoShareGui::~ChronoShareGui()
 {
+#ifdef ADHOC_SUPPORTED
+  m_executor.shutdown ();
+#endif
+
   delete m_watcher; // stop filewatching ASAP
   delete m_dispatcher; // stop dispatcher ASAP, but after watcher (to prevent triggering callbacks on deleted object)
 
   // cleanup
   delete m_trayIcon;
   delete m_trayIconMenu;
+#ifdef ADHOC_SUPPORTED
+  delete m_wifiAction;
+#endif
   delete m_openFolder;
   delete m_viewSettings;
   delete m_changeFolder;
@@ -169,6 +186,8 @@
 
 void ChronoShareGui::createActions()
 {
+  _LOG_DEBUG ("Create actions");
+
   // create the "open folder" action
   m_openFolder = new QAction(tr("&Open Folder"), this);
   connect(m_openFolder, SIGNAL(triggered()), this, SLOT(openSharedFolder()));
@@ -181,6 +200,14 @@
   m_changeFolder = new QAction(tr("&Change Folder"), this);
   connect(m_changeFolder, SIGNAL(triggered()), this, SLOT(openFileDialog()));
 
+#ifdef ADHOC_SUPPORTED
+  // create "AdHoc Wifi" action
+  m_wifiAction = new QAction (tr("Enable AdHoc &WiFI"), m_trayIconMenu);
+  m_wifiAction->setChecked (false);
+  m_wifiAction->setCheckable (true);
+  connect (m_wifiAction, SIGNAL (toggled(bool)), this, SLOT(onAdHocChange(bool)));
+#endif
+
   // create the "quit program" action
   m_quitProgram = new QAction(tr("&Quit"), this);
   connect(m_quitProgram, SIGNAL(triggered()), qApp, SLOT(quit()));
@@ -197,18 +224,61 @@
   m_trayIconMenu->addAction(m_viewSettings);
   m_trayIconMenu->addAction(m_changeFolder);
   m_trayIconMenu->addSeparator();
+  m_trayIconMenu->addAction(m_wifiAction);
+  m_trayIconMenu->addSeparator();
   m_trayIconMenu->addAction(m_quitProgram);
 
   // create new tray icon
   m_trayIcon = new QSystemTrayIcon(this);
 
+#ifdef ADHOC_SUPPORTED
   // associate the menu with the tray icon
   m_trayIcon->setContextMenu(m_trayIconMenu);
+#endif
 
   // handle left click of icon
   connect(m_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconClicked(QSystemTrayIcon::ActivationReason)));
 }
 
+void
+ChronoShareGui::onAdHocChange (bool state)
+{
+#ifdef ADHOC_SUPPORTED
+  if (m_wifiAction->isChecked ())
+    {
+      QMessageBox msgBox;
+      msgBox.setText ("WARNING: your WiFi will be disconnected");
+      msgBox.setIcon (QMessageBox::Warning);
+      msgBox.setInformativeText("AdHoc WiFi will disconnect your current WiFi.\n  Are you sure that you are OK with that?");
+      msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+      msgBox.setDefaultButton(QMessageBox::Cancel);
+      int ret = msgBox.exec();
+
+      if (ret == QMessageBox::Cancel)
+        {
+          m_wifiAction->setChecked (false);
+        }
+      else
+        {
+
+          m_wifiAction->setText (tr("Disable AdHoc WiFI"));
+
+          // create adhoc
+          m_executor.execute (Adhoc::CreateAdhoc);
+        }
+    }
+  else
+    {
+      m_wifiAction->setText (tr("Enable AdHoc WiFI"));
+
+      // disable adhoc
+      m_executor.execute (Adhoc::DestroyAdhoc);
+
+      // a trick in DestroyAdhoc ensures that WiFi will be reconnected to a default WiFi
+    }
+#endif
+}
+
 void ChronoShareGui::setIcon()
 {
   // set the icon image
diff --git a/gui/chronosharegui.h b/gui/chronosharegui.h
index 23f6e9d..eba4c12 100644
--- a/gui/chronosharegui.h
+++ b/gui/chronosharegui.h
@@ -16,11 +16,15 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Jared Lindblom <lindblom@cs.ucla.edu>
+ *         Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ *         Zhenkai Zhu <zhenkai@cs.ucla.edu>
  */
 
 #ifndef CHRONOSHAREGUI_H
 #define CHRONOSHAREGUI_H
 
+#include "adhoc.h"
+
 #include <QtGui>
 #include <QWidget>
 #include <QSystemTrayIcon>
@@ -64,6 +68,10 @@
   // change chronoshare settings
   void changeSettings();
 
+  // click on adhoc button
+  void onAdHocChange (bool state); // cannot be protected with #ifdef. otherwise something fishy with QT
+
+
 private:
   // create actions that result from clicking a menu option
   void createActions();
@@ -102,6 +110,8 @@
   QAction* m_changeFolder; // change the shared folder action
   QAction* m_quitProgram; // quit program action
 
+  QAction *m_wifiAction;
+
   QString m_dirPath; // shared directory
   QString m_username; // username
   QString m_sharedFolderName; // shared folder name
@@ -119,6 +129,10 @@
   QLabel *label;
   QVBoxLayout *mainLayout;
 
+#ifdef ADHOC_SUPPORTED
+  Executor m_executor;
+#endif
+
   // QString m_settingsFilePath; // settings file path
   // QString m_settings;
 };
diff --git a/wscript b/wscript
index 8a0bede..f2d7b1d 100644
--- a/wscript
+++ b/wscript
@@ -142,7 +142,7 @@
         features = "qt4 cxx cxxprogram",
         defines = "WAF",
         source = bld.path.ant_glob(['gui/*.cpp', 'gui/*.cc', 'gui/*.qrc']),
-        includes = "ccnx scheduler executor fs-watcher gui src . ",
+        includes = "ccnx scheduler executor fs-watcher gui src adhoc . ",
         use = "BOOST BOOST_FILESYSTEM SQLITE3 QTCORE QTGUI LOG4CXX fs_watcher ccnx database chronoshare"
         )
 
