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 aba54dd..b2bddd3 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
@@ -151,24 +151,6 @@
   @SuppressWarnings("restriction")
   public Object start(IApplicationContext context) throws Exception
   {
-    Job.getJobManager().addJobChangeListener(new JobChangeAdapter()
-    {
-      @Override
-      public void done(IJobChangeEvent event)
-      {
-        Job job = event.getJob();
-        if (job.getClass().getName().equals("org.eclipse.equinox.internal.p2.director.Projector$ExplanationJob"))
-        {
-          Object projector = ReflectUtil.getValue("this$0", job);
-          Object dependencyHelper = ReflectUtil.getValue("dependencyHelper", projector);
-          Object explainer = ReflectUtil.getValue("solver", dependencyHelper);
-          Object adapter = ReflectUtil.getValue("solver", explainer);
-          Object decorator = ReflectUtil.getValue("solver", adapter);
-          ReflectUtil.invokeMethod("reset", decorator);
-        }
-      }
-    });
-
     String[] arguments = (String[])context.getArguments().get(IApplicationContext.APPLICATION_ARGS);
     Map<String, URI> nodeURIs = new LinkedHashMap<String, URI>();
     outputLocation = File.createTempFile("marketplace", "-report");
@@ -353,6 +335,7 @@
     platformVersions.put("platform.version=4.21", "2021-09");
     platformVersions.put("platform.version=4.22", "2021-12");
     platformVersions.put("platform.version=4.23", "2022-03");
+    platformVersions.put("platform.version=4.24", "2022-06");
 
     Set<URI> nodeQueryURIs = new LinkedHashSet<URI>();
     {
