Index: src/Menu/DisplayMenuItem.cpp
===================================================================
--- src/Menu/DisplayMenuItem.cpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/DisplayMenuItem.cpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -36,5 +36,7 @@
 
 void DisplayMenuItem::doTrigger(){}
-void DisplayMenuItem::checkTrigger(char c){}
+bool DisplayMenuItem::checkTrigger(char c){
+  return false;
+}
 
 const string DisplayMenuItem::formatEntry(){
Index: src/Menu/DisplayMenuItem.hpp
===================================================================
--- src/Menu/DisplayMenuItem.hpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/DisplayMenuItem.hpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -28,5 +28,5 @@
 
   virtual void doTrigger();
-  virtual void checkTrigger(char);
+  virtual bool checkTrigger(char);
 
   virtual const string formatEntry();
Index: src/Menu/MenuItem.cpp
===================================================================
--- src/Menu/MenuItem.cpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/MenuItem.cpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -33,7 +33,12 @@
  * check if the trigger matches and call doTrigger if it does.
  */
-void MenuItem::checkTrigger(char key) {
-  if(key == trigger)
+bool MenuItem::checkTrigger(char key) {
+  if(key == trigger) {
     doTrigger();
+    return true;
+  }
+  else
+    return false;
+
 }
 
Index: src/Menu/MenuItem.hpp
===================================================================
--- src/Menu/MenuItem.hpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/MenuItem.hpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -31,5 +31,5 @@
 
   virtual void doTrigger()=0;
-  virtual void checkTrigger(char);
+  virtual bool checkTrigger(char);
 
   virtual const string formatEntry();
Index: src/Menu/SeperatorItem.cpp
===================================================================
--- src/Menu/SeperatorItem.cpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/SeperatorItem.cpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -38,5 +38,7 @@
 
 void SeperatorItem::doTrigger(){}
-void SeperatorItem::checkTrigger(char){}
+bool SeperatorItem::checkTrigger(char){
+  return false;
+}
 
 const string SeperatorItem::getDescription() {
Index: src/Menu/SeperatorItem.hpp
===================================================================
--- src/Menu/SeperatorItem.hpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/SeperatorItem.hpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -24,5 +24,5 @@
 
   virtual void doTrigger();
-  virtual void checkTrigger(char);
+  virtual bool checkTrigger(char);
 
   virtual const string getDescription();
Index: src/Menu/TextMenu.cpp
===================================================================
--- src/Menu/TextMenu.cpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/TextMenu.cpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -22,5 +22,6 @@
 spacer(_spacer),
 length(_length),
-quit(false)
+quit(false),
+defaultItem(0)
 {
 }
@@ -55,4 +56,5 @@
 void TextMenu::display() {
   char choice;
+  bool somethingChosen = false;
   do {
     int pre = floor((length - title.length()) /2.0);
@@ -69,5 +71,21 @@
     cin >> choice;
 
-    for_each(items.begin(), items.end(), boost::bind(&MenuItem::checkTrigger,_1,choice));
+    list<MenuItem*>::iterator iter;
+    for(iter = items.begin(); iter!=items.end();iter++){
+      somethingChosen |= (*iter)->checkTrigger(choice);
+    }
+    // see if something was chosen and call default Item if not
+    if(!somethingChosen) {
+      if(defaultItem){
+        defaultItem->doTrigger();
+      }
+      else{
+        outputter << "Invalid Choice!" <<  endl;
+      }
+    }
   }while (!hasQuit());
 }
+
+void TextMenu::addDefault(MenuItem* _defaultItem) {
+  defaultItem = _defaultItem;
+}
Index: src/Menu/TextMenu.hpp
===================================================================
--- src/Menu/TextMenu.hpp	(revision ef81b0af9e8751502b741eab9c958fa73de74522)
+++ src/Menu/TextMenu.hpp	(revision 8f113e699e9964e0a218b631615dad0985d8985b)
@@ -38,7 +38,9 @@
   virtual void doQuit();
   /**
-   * Check wether someone has chosen to quit
+   * Check whether someone has chosen to quit
    */
   virtual bool hasQuit();
+
+  virtual void addDefault(MenuItem*);
 
 protected:
@@ -47,4 +49,7 @@
 private:
   list<MenuItem*> items;
+
+  MenuItem* defaultItem;
+
   ostream& outputter;
   string title;
