diff --git a/Utils/Console/Executor.cc b/Utils/Console/Executor.cc
index 3bfa19bd41fd6e972416be3a47e4950647136586..e3f09216f24f5bc150e4c00efe5b38ea4b73db7f 100644
--- a/Utils/Console/Executor.cc
+++ b/Utils/Console/Executor.cc
@@ -30,6 +30,7 @@
 #include <boost/utility.hpp>
 #include <boost/range/iterator_range.hpp>
 #include <boost/bind.hpp>
+#include <boost/format.hpp>
 #include "../../Utils/senfassert.hh"
 #include "../../Utils/Range.hh"
 #include "../../Utils/String.hh"
@@ -222,14 +223,16 @@ prefix_ void senf::console::Executor::ls(std::ostream & output,
     DirectoryNode & node (*dir.back().lock());
     DirectoryNode::child_iterator i (node.children().begin());
     DirectoryNode::child_iterator const i_end (node.children().end());
-    for (; i != i_end; ++i) {
-        output << i->first;
-        if (i->second->isDirectory())
-            output << "/";
-        else if (i->second->isLink())
-            output << "@";
-        output << "\n";
-    }
+    boost::format fmt ("%s%s  %|20t|%.59s\n");
+    for (; i != i_end; ++i)
+        output << fmt
+            % i->first
+            % ( i->second->isDirectory()
+                ? "/"
+                : i->second->isLink()
+                ? "@"
+                : "" )
+            % i->second->shorthelp();
 }
 
 prefix_ void senf::console::Executor::pushd(ParseCommandInfo::TokensRange dir)
diff --git a/Utils/Console/Executor.test.cc b/Utils/Console/Executor.test.cc
index 833aa4559af89bc26fe6054a37a9aafa6d2a7981..f02943bf2ac101e48f2aff5e0683cbca528afd2d 100644
--- a/Utils/Console/Executor.test.cc
+++ b/Utils/Console/Executor.test.cc
@@ -99,7 +99,10 @@ BOOST_AUTO_UNIT_TEST(executor)
         parser.parse("ls", &setCommand);
         executor(os, commands.back());
         BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLS );
-        BOOST_CHECK_EQUAL( os.str(), "dir1/\ndir2/\nsys/\n" );
+        BOOST_CHECK_EQUAL( os.str(), 
+                           "dir1/               \n"
+                           "dir2/               Helptext\n"
+                           "sys/                \n" );
     }
 
     {
@@ -107,7 +110,7 @@ BOOST_AUTO_UNIT_TEST(executor)
         parser.parse("ls dir1", &setCommand);
         executor(os, commands.back());
         BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLS );
-        BOOST_CHECK_EQUAL( os.str(), "dir3/\n" );
+        BOOST_CHECK_EQUAL( os.str(), "dir3/               \n" );
     }
 
     {
@@ -213,7 +216,7 @@ BOOST_AUTO_UNIT_TEST(executorPolicy)
         parser.parse("ls dir1", &setCommand);
         executor(os, commands.back());
         BOOST_CHECK_EQUAL( commands.back().builtin(), senf::console::ParseCommandInfo::BuiltinLS );
-        BOOST_CHECK_EQUAL( os.str(), "dir3/\n" );
+        BOOST_CHECK_EQUAL( os.str(), "dir3/               \n" );
     }
 
     {
diff --git a/Utils/Console/OverloadedCommand.cc b/Utils/Console/OverloadedCommand.cc
index 8a0c631ca772f977a57d37b2a3bd15dfd56b7e8c..cb405a78b22d599f37e9917b34e95c2f9681bd7e 100644
--- a/Utils/Console/OverloadedCommand.cc
+++ b/Utils/Console/OverloadedCommand.cc
@@ -160,7 +160,16 @@ prefix_ std::string senf::console::OverloadedCommandNode::v_shorthelp()
 {
     if (!shortdoc_.empty())
         return shortdoc_;
-    return doc_.substr(0,doc_.find('\n'));
+    if (!doc_.empty())
+        return doc_.substr(0,doc_.find('\n'));
+    Overloads::const_iterator i (overloads_.begin());
+    Overloads::const_iterator const i_end (overloads_.end());
+    for (; i != i_end; ++i) {
+        std::string overloadDoc ((*i)->doc());
+        if (! overloadDoc.empty()) 
+            return overloadDoc.substr(0,doc_.find('\n'));
+    }
+    return "";
 }
 
 prefix_ void senf::console::OverloadedCommandNode::v_execute(boost::any & rv,
diff --git a/Utils/Console/ParsedCommand.test.cc b/Utils/Console/ParsedCommand.test.cc
index 74f57d7351ee463875da91c2fa87227ccea26c51..595365848f90a628699c81358d6575e57042e82b 100644
--- a/Utils/Console/ParsedCommand.test.cc
+++ b/Utils/Console/ParsedCommand.test.cc
@@ -303,7 +303,7 @@ BOOST_AUTO_UNIT_TEST(directoryReturn)
         SENF_CHECK_NO_THROW(
             parser.parse("test/test { ls; }",
                          boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
-        BOOST_CHECK_EQUAL( ss.str(), "<Directory at '/test/dircb'>\ncb1\n" );
+        BOOST_CHECK_EQUAL( ss.str(), "<Directory at '/test/dircb'>\ncb1                 \n" );
     }
     
 }