Index: src/Actions/ActionQueue.cpp
===================================================================
--- src/Actions/ActionQueue.cpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/Actions/ActionQueue.cpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -58,12 +58,18 @@
     AR(new ActionRegistry()),
     history(new ActionHistory),
+#ifndef HAVE_ACTION_THREAD
+    CurrentAction(0)
+#else
     CurrentAction(0),
     run_thread(boost::bind(&ActionQueue::run, this)),
     run_thread_isIdle(true)
+#endif
 {}
 
 ActionQueue::~ActionQueue()
 {
+#ifdef HAVE_ACTION_THREAD
   stop();
+#endif
 
   // free all actions contained in actionqueue
@@ -86,6 +92,16 @@
   Action *newaction = _action->clone(state);
   newaction->prepare(state);
+#ifdef HAVE_ACTION_THREAD
   mtx_queue.lock();
+#endif
   actionqueue.push_back( newaction );
+#ifndef HAVE_ACTION_THREAD
+  try {
+    newaction->call();
+  } catch(ActionFailureException &e) {
+    std::cerr << "Action " << *boost::get_error_info<ActionNameString>(e) << " has failed." << std::endl;
+    World::getInstance().setExitFlag(5);
+  }
+#else
   {
     boost::lock_guard<boost::mutex> lock(mtx_idle);
@@ -93,8 +109,12 @@
   }
   mtx_queue.unlock();
+#endif
 }
 
 void ActionQueue::insertAction(Action *_action, enum Action::QueryOptions state)
 {
+#ifndef HAVE_ACTION_THREAD
+  queueAction(_action, state);
+#else
   Action *newaction = _action->clone(state);
   newaction->prepare(state);
@@ -106,6 +126,8 @@
   }
   mtx_queue.unlock();
-}
-
+#endif
+}
+
+#ifdef HAVE_ACTION_THREAD
 void ActionQueue::run()
 {
@@ -157,4 +179,5 @@
   } while (!Interrupted);
 }
+#endif
 
 void ActionQueue::insertTempQueue()
@@ -168,4 +191,5 @@
 }
 
+#ifdef HAVE_ACTION_THREAD
 void ActionQueue::wait()
 {
@@ -176,5 +200,7 @@
   }
 }
-
+#endif
+
+#ifdef HAVE_ACTION_THREAD
 void ActionQueue::stop()
 {
@@ -184,4 +210,5 @@
   run_thread.join();
 }
+#endif
 
 Action* ActionQueue::getActionByName(const std::string &name)
Index: src/Actions/ActionQueue.hpp
===================================================================
--- src/Actions/ActionQueue.hpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/Actions/ActionQueue.hpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -16,5 +16,8 @@
 #include "CodePatterns/Singleton.hpp"
 
+
+#ifdef HAVE_ACTION_THREAD
 #include <boost/thread.hpp>
+#endif
 #include <vector>
 
@@ -22,6 +25,8 @@
 #include "Actions/ActionState.hpp"
 
+#ifdef HAVE_ACTION_THREAD
 void stopQueue();
 void waitQueue();
+#endif
 
 namespace MoleCuilder {
@@ -117,6 +122,8 @@
   void redoLast();
 
+#ifdef HAVE_ACTION_THREAD
   boost::thread &getRunThread()
   { return run_thread; }
+#endif
 
 private:
@@ -136,4 +143,5 @@
   void clear();
 
+#ifdef HAVE_ACTION_THREAD
   /** Runs the ActionQueue.
    *
@@ -154,4 +162,5 @@
    */
   void wait();
+#endif
 
   /** Insert an action after CurrentAction.
@@ -196,4 +205,5 @@
   ActionQueue_t tempqueue;
 
+#ifdef HAVE_ACTION_THREAD
   //!> internal thread to call Actions
   boost::thread run_thread;
@@ -210,4 +220,5 @@
   //!> internal mutex to synchronize access to run_thread_isIdle
   boost::mutex mtx_idle;
+#endif
 };
 
Index: src/Actions/MakroAction.cpp
===================================================================
--- src/Actions/MakroAction.cpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/Actions/MakroAction.cpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -89,5 +89,5 @@
 bool MakroAction::removeAction(const std::string &name)
 {
-  actions.removeAction(name);
+  return actions.removeAction(name);
 }
 
Index: src/Python/wait.cpp
===================================================================
--- src/Python/wait.cpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/Python/wait.cpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -45,7 +45,9 @@
 {
   // prevent wait() in python scripts in case of present UI (loaded sessions)
+#ifdef HAVE_ACTION_THREAD
   if (!UIFactory::isFactoryPresent()) {
     LOG(0, "Waiting for action queue to idle.");
     waitQueue();
   }
+#endif
 }
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/builder.cpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -49,6 +49,8 @@
   doUI();
 
+#ifdef HAVE_ACTION_THREAD
   waitQueue();
   stopQueue();
+#endif
   if (UIFactory::getInstance().getUIName() == "CommandLine")
     return saveAll();
Index: src/cleanUp.cpp
===================================================================
--- src/cleanUp.cpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/cleanUp.cpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -114,6 +114,8 @@
 void stopAndPurgeQueue()
 {
+#ifdef HAVE_ACTION_THREAD
   // adding a wait here such that ActionQueue's run_thread is done any may stop
   waitQueue();
+#endif
   MoleCuilder::ActionQueue::purgeInstance();
   MoleCuilder::OptionRegistry::purgeInstance();
@@ -218,4 +220,5 @@
 }
 
+#ifdef HAVE_ACTION_THREAD
 /** Stops the queue such that all Actions are done.
  *
@@ -233,2 +236,3 @@
   MoleCuilder::ActionQueue::getInstance().wait();
 }
+#endif
Index: src/cleanUp.hpp
===================================================================
--- src/cleanUp.hpp	(revision 415ddd8a44847064389eb3783769c8531725615c)
+++ src/cleanUp.hpp	(revision 74459a014f105522f5db261ac058254c9aa7c0c7)
@@ -19,6 +19,8 @@
 void purgeStaticInstances();
 int saveAll();
+#ifdef HAVE_ACTION_THREAD
 void stopQueue();
 void waitQueue();
+#endif
 
 #endif /* CLEANUP_HPP_ */
