Index: src/Actions/ActionQueue.cpp
===================================================================
--- src/Actions/ActionQueue.cpp	(revision 867473fc81f5f56ef4a2749de5a2256f208084b8)
+++ src/Actions/ActionQueue.cpp	(revision c01fec6a0c349cdec638b991086b581c75b3eccc)
@@ -355,4 +355,9 @@
 }
 
+bool ActionQueue::canUndo() const
+{
+  return history->hasUndo();
+}
+
 void ActionQueue::redoLast()
 {
@@ -360,4 +365,9 @@
 }
 
+bool ActionQueue::canRedo() const
+{
+  return history->hasRedo();
+}
+
 
 CONSTRUCT_SINGLETON(ActionQueue)
Index: src/Actions/ActionQueue.hpp
===================================================================
--- src/Actions/ActionQueue.hpp	(revision 867473fc81f5f56ef4a2749de5a2256f208084b8)
+++ src/Actions/ActionQueue.hpp	(revision c01fec6a0c349cdec638b991086b581c75b3eccc)
@@ -145,4 +145,16 @@
   void redoLast();
 
+  /** Checks whether there is one completed Action stored in ActionHistory in the past.
+   *
+   * @return true - at least one Action to undo present, false - else
+   */
+  bool canUndo() const;
+
+  /** Checks whether there is one completed Action stored in ActionHistory in the future.
+   *
+   * @return true - at least one Action to redo present, false - else
+   */
+  bool canRedo() const;
+
   /** Return status of last executed action.
    *
Index: src/UIElements/Views/Qt4/QtToolBar.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtToolBar.cpp	(revision 867473fc81f5f56ef4a2749de5a2256f208084b8)
+++ src/UIElements/Views/Qt4/QtToolBar.cpp	(revision c01fec6a0c349cdec638b991086b581c75b3eccc)
@@ -28,7 +28,4 @@
  */
 
-
-
-
 // include config.h
 #ifdef HAVE_CONFIG_H
@@ -36,14 +33,26 @@
 #endif
 
-
 #include "QtToolBar.hpp"
 
 #include "CodePatterns/MemDebug.hpp"
 
+#include "CodePatterns/Observer/Notification.hpp"
+
+#include "Actions/ActionQueue.hpp"
+
 QtToolBar::QtToolBar(QWidget * _parent) :
-  QToolBar(_parent)
+  QToolBar(_parent),
+  Observer("QToolBar"),
+  ActionQueue_observing(false),
+  undoaction(addActionItem("undo", "undo the last Action", "edit-undo")),
+  redoaction(addActionItem("redo", "redo the last Action", "edit-redo"))
 {
-  addActionItem("undo", "undo the last Action", "edit-undo");
-  addActionItem("redo", "redo the last Action", "edit-redo");
+  // gray out undo/redo buttons initially
+  undoaction->setEnabled(false);
+  redoaction->setEnabled(false);
+
+  // sign in
+  MoleCuilder::ActionQueue::getInstance().signOn(this, MoleCuilder::ActionQueue::ActionQueued);
+  ActionQueue_observing = true;
 }
 
@@ -51,8 +60,14 @@
 QtToolBar::~QtToolBar()
 {
+  // sign off
+  if (ActionQueue_observing)
+    MoleCuilder::ActionQueue::getInstance().signOff(this, MoleCuilder::ActionQueue::ActionQueued);
 }
 
 
-void QtToolBar::addActionItem(const std::string &token, const std::string &description, const std::string &icon_name)
+QAction * QtToolBar::addActionItem(
+    const std::string &token,
+    const std::string &description,
+    const std::string &icon_name)
 {
   QAction *action = addAction(QString(description.c_str()));
@@ -63,4 +78,5 @@
   plumbing.push_back(pipe);
   present_actions.insert( token );
+  return action;
 }
 
@@ -72,2 +88,29 @@
 }
 
+void QtToolBar::update(Observable *publisher)
+{
+  ASSERT(0, "QtToolBar::update() - this should never be called, we are only subscribed to channels.");
+}
+
+void QtToolBar::subjectKilled(Observable *publisher)
+{
+  ActionQueue_observing = false;
+}
+
+void QtToolBar::recieveNotification(Observable *publisher, Notification_ptr notification)
+{
+  if (dynamic_cast<MoleCuilder::ActionQueue *>(publisher) != NULL) {
+    switch(notification->getChannelNo()) {
+      case MoleCuilder::ActionQueue::ActionQueued:
+        undoaction->setEnabled(MoleCuilder::ActionQueue::getInstance().canUndo());
+        redoaction->setEnabled(MoleCuilder::ActionQueue::getInstance().canRedo());
+        break;
+      default:
+        ASSERT(0, "QtToolBar::recieveNotification() - cannot get here, not subscribed to channel "
+            +toString(notification->getChannelNo()));
+        break;
+    }
+  } else {
+    ASSERT(0, "QtToolBar::recieveNotification() - cannot get here, we are only subscribed to ActionQueue.");
+  }
+}
Index: src/UIElements/Views/Qt4/QtToolBar.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtToolBar.hpp	(revision 867473fc81f5f56ef4a2749de5a2256f208084b8)
+++ src/UIElements/Views/Qt4/QtToolBar.hpp	(revision c01fec6a0c349cdec638b991086b581c75b3eccc)
@@ -27,5 +27,5 @@
 
 
-class QtToolBar : public QToolBar
+class QtToolBar : public QToolBar, public Observer
 {
   Q_OBJECT
@@ -39,6 +39,10 @@
    * @param description description to appear as tooltip
    * @param icon_name name of icon
+   * @return ref to newly created action
    */
-  void addActionItem(const std::string &token, const std::string &description, const std::string &icon_name);
+  QAction * addActionItem(
+      const std::string &token,
+      const std::string &description,
+      const std::string &icon_name);
 
   /** Function to add a set of favorite actions.
@@ -57,4 +61,8 @@
   const present_actions_t & getPresentActions() const
   { return present_actions; }
+
+  void update(Observable *publisher);
+  void subjectKilled(Observable *publisher);
+  void recieveNotification(Observable *publisher, Notification_ptr notification);
 
 private:
@@ -105,4 +113,11 @@
   //!> set of already present action icons
   present_actions_t present_actions;
+
+  //!> sign in to ActionQueue?
+  bool ActionQueue_observing;
+  //!> ref to undoaction to gray out
+  QAction *undoaction;
+  //!> ref to redoaction to gray out
+  QAction *redoaction;
 };
 
Index: src/UIElements/Views/Qt4/QtToolBar_QtFavoriteActions.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtToolBar_QtFavoriteActions.cpp	(revision 867473fc81f5f56ef4a2749de5a2256f208084b8)
+++ src/UIElements/Views/Qt4/QtToolBar_QtFavoriteActions.cpp	(revision c01fec6a0c349cdec638b991086b581c75b3eccc)
@@ -46,5 +46,4 @@
 #include "CodePatterns/Assert.hpp"
 #include "CodePatterns/Log.hpp"
-#include "CodePatterns/Observer/Observer.hpp"
 
 #include "Actions/Action.hpp"
