diff --git a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/MarketplaceCatalogGenerator.java b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/MarketplaceCatalogGenerator.java
index 273eb40..57b94f9 100644
--- a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/MarketplaceCatalogGenerator.java
+++ b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/MarketplaceCatalogGenerator.java
@@ -144,6 +144,8 @@
 
   private IMetadataRepositoryManager manager;
 
+  private long await = 60;
+
   @SuppressWarnings("restriction")
   public Object start(IApplicationContext context) throws Exception
   {
@@ -168,6 +170,10 @@
         {
           nodeURIs.put("", URI.createURI(arguments[++i]));
         }
+        if ("-await".equals(option))
+        {
+          await = Integer.parseInt(arguments[++i]);
+        }
       }
     }
 
@@ -795,6 +801,7 @@
 
     long startTesting = System.currentTimeMillis();
     System.out.println("Loaded repositories : " + (startTesting - startRepositoryLoads) / 1000 + " seconds");
+    System.out.println("Start testing for at most " + await + " minutes");
     test();
     long finishTesting = System.currentTimeMillis();
     System.out.println("Testing : " + (finishTesting - startTesting) / 1000 + " seconds");
@@ -833,8 +840,12 @@
 
   private void generateMinimizedResult()
   {
+    System.out.println("Generating minimized result from:" + getResolvedResourceURI());
+
     Resource resource = resourceSet.getResource(getResolvedResourceURI(), true);
 
+    System.out.println("Loaded result from:" + getResolvedResourceURI());
+
     Set<EObject> objectsToDelete = new HashSet<EObject>();
     for (Iterator<EObject> it = resource.getAllContents(); it.hasNext();)
     {
@@ -871,6 +882,7 @@
 
     try
     {
+      System.out.println("Saving to :" + getResolvedMinimizedResourceURI());
       resource.save(Collections.singletonMap(XMLResource.OPTION_LINE_WIDTH, Integer.MAX_VALUE));
     }
     catch (IOException ex)
@@ -1084,7 +1096,15 @@
     }
 
     executor.shutdown();
-    executor.awaitTermination(1, TimeUnit.HOURS);
+    boolean terminated = executor.awaitTermination(await, TimeUnit.MINUTES);
+    if (terminated)
+    {
+      System.out.println("Testing normally.");
+    }
+    else
+    {
+      System.out.println("Testing terminated with a timeout after " + await + " minutes");
+    }
 
     try
     {
