Index: src/Fragmentation/Automation/FragmentQueue.cpp
===================================================================
--- src/Fragmentation/Automation/FragmentQueue.cpp	(revision 402bde72b40b66cbc74451c852e07802a12af199)
+++ src/Fragmentation/Automation/FragmentQueue.cpp	(revision b9c48666be399d007fd031b2d636eba8227f227d)
@@ -98,4 +98,16 @@
 }
 
+/** Internal function to check whether result is not one of static entities.
+ *
+ * @param result result to check against
+ * @return true - result is a present, valid result, false - result is one of the statics
+ */
+bool FragmentQueue::isPresentResult(const FragmentResult &_result) const
+{
+  return (_result != NoResult)
+      && (_result != NoResultQueued)
+      && (_result != ResultDelivered);
+}
+
 /** Queries whether a job has already been finished and the result is present.
  *
@@ -107,7 +119,5 @@
   ResultMap::const_iterator iter = results.find(jobid);
   return ((iter != results.end())
-      && (iter->second != NoResult)
-      && (iter->second != NoResultQueued)
-      && (iter->second != ResultDelivered));
+      && isPresentResult(iter->second));
 }
 
@@ -147,9 +157,23 @@
       "FragmentQueue::pushResult() - job "+toString(jobid)+"'s result has already been delivered.");
   /// store result
-  FragmentResult result = iter->second;
+  FragmentResult _result = iter->second;
   /// mark as delivered in map
   iter->second = ResultDelivered;
   /// and return result
-  return result;
+  return _result;
+}
+
+std::vector<FragmentResult> FragmentQueue::getAllResults()
+{
+  std::vector<FragmentResult> returnresults;
+  for (ResultMap::iterator iter = results.begin();
+      iter != results.end(); ++iter) {
+    if (isPresentResult(iter->second)) {
+      returnresults.push_back(getResult(iter->first));
+      iter = results.begin();
+    }
+  }
+
+  return returnresults;
 }
 
@@ -160,13 +184,14 @@
  * \param result result of job to store
  */
-void FragmentQueue::pushResult(FragmentResult &result)
+void FragmentQueue::pushResult(FragmentResult &_result)
 {
   /// check for presence
-  ResultMap::iterator iter = results.find(result.getId());
+  ResultMap::iterator iter = results.find(_result.getId());
   ASSERT(iter != results.end(),
-      "FragmentQueue::pushResult() - job "+toString(result.getId())+" is not known to us.");
+      "FragmentQueue::pushResult() - job "+toString(_result.getId())+" is not known to us.");
   ASSERT(iter->second == NoResultQueued,
-      "FragmentQueue::pushResult() - is not waiting for the result of job "+toString(result.getId())+".");
+      "FragmentQueue::pushResult() - is not waiting for the result of job "+toString(_result.getId())+".");
   /// and overwrite NoResult in found entry
-  iter->second = result;
+  iter->second = _result;
 }
+
Index: src/Fragmentation/Automation/FragmentQueue.hpp
===================================================================
--- src/Fragmentation/Automation/FragmentQueue.hpp	(revision 402bde72b40b66cbc74451c852e07802a12af199)
+++ src/Fragmentation/Automation/FragmentQueue.hpp	(revision b9c48666be399d007fd031b2d636eba8227f227d)
@@ -44,8 +44,12 @@
   bool isResultPresent(JobId_t jobid) const;
   FragmentResult getResult(JobId_t jobid);
-  void pushResult(FragmentResult &result);
+  void pushResult(FragmentResult &_result);
+  std::vector<FragmentResult> getAllResults();
+
   size_t getDoneJobs() const;
 
 private:
+  bool isPresentResult(const FragmentResult &_result) const;
+
   //!> result that takes place in ResultQueue after job has arrived before it has been popped.
   static FragmentResult NoResult;
Index: src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp
===================================================================
--- src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp	(revision 402bde72b40b66cbc74451c852e07802a12af199)
+++ src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp	(revision b9c48666be399d007fd031b2d636eba8227f227d)
@@ -234,2 +234,58 @@
 #endif
 }
+
+/** UnitTest for working ResultMap
+ */
+void FragmentQueueTest::AllResultsTest()
+{
+  // prepare a job
+  FragmentJob testJob;
+  testJob.setId(1);
+  testJob.outputfile = std::string("do something");
+  FragmentJob anothertestJob;
+  anothertestJob.setId(2);
+  anothertestJob.outputfile = std::string("do something else");
+
+#ifndef NDEBUG
+  CPPUNIT_ASSERT_NO_THROW( queue->pushJob(testJob) );
+  CPPUNIT_ASSERT_NO_THROW( queue->pushJob(anothertestJob) );
+#else
+  queue->pushJob(testJob);
+  queue->pushJob(anothertestJob);
+#endif
+
+  // check that no results are returned.
+  {
+    const std::vector<FragmentResult> results = queue->getAllResults();
+    CPPUNIT_ASSERT_EQUAL( (size_t)0, results.size() );
+  }
+
+  // pop both as if some work was being done
+#ifndef NDEBUG
+  CPPUNIT_ASSERT_NO_THROW( queue->popJob() );
+  CPPUNIT_ASSERT_NO_THROW( queue->popJob() );
+#else
+  queue->popJob();
+  queue->popJob();
+#endif
+
+  // prepare a result
+  FragmentResult testResult(1);
+  FragmentResult anothertestResult(2);
+
+  // push correct result
+#ifndef NDEBUG
+  CPPUNIT_ASSERT_NO_THROW( queue->pushResult(testResult) );
+  CPPUNIT_ASSERT_NO_THROW( queue->pushResult(anothertestResult) );
+#else
+  queue->pushResult(testResult);
+  queue->pushResult(anothertestResult);
+#endif
+
+  // check that two results are returned.
+  {
+    const std::vector<FragmentResult> results = queue->getAllResults();
+    CPPUNIT_ASSERT_EQUAL( (size_t)2, results.size() );
+  }
+}
+
Index: src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.hpp
===================================================================
--- src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.hpp	(revision 402bde72b40b66cbc74451c852e07802a12af199)
+++ src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.hpp	(revision b9c48666be399d007fd031b2d636eba8227f227d)
@@ -27,4 +27,5 @@
     CPPUNIT_TEST ( JobsTest );
     CPPUNIT_TEST ( ResultsTest );
+    CPPUNIT_TEST ( AllResultsTest );
     CPPUNIT_TEST_SUITE_END();
 
@@ -35,4 +36,5 @@
       void JobsTest();
       void ResultsTest();
+      void AllResultsTest();
 
 private:
