diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
index e6f090d..21dec3d 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/AbstractDistributionPackageBuilder.java
@@ -157,7 +157,8 @@
         boolean installed;
         // not a simple package
         if (distributionPackage == null) {
-            installed = installPackageInternal(resourceResolver, stream);
+            installPackageInternal(resourceResolver, stream);
+            installed = true;
         } else {
             installed = installPackage(resourceResolver, distributionPackage);
             packageInfo.putAll(distributionPackage.getInfo());
@@ -198,11 +199,9 @@
         InputStream inputStream = null;
         try {
             inputStream = distributionPackage.createInputStream();
-            boolean isInstalled = installPackageInternal(resourceResolver, inputStream);
-            if (isInstalled) {
-                installHook.onPostAdd(resourceResolver, distributionPackage);
-            }
-            return isInstalled;
+            installPackageInternal(resourceResolver, inputStream);
+            installHook.onPostAdd(resourceResolver, distributionPackage);
+            return true;
         } catch (IOException e) {
             throw new DistributionException(e);
         } finally {
@@ -260,7 +259,7 @@
             throws DistributionException;
 
 
-    protected abstract boolean installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream stream)
+    protected abstract void installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream stream)
             throws DistributionException;
 
     @Nullable
diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackageBuilder.java
index 35dbf8b..8e649ee 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/FileDistributionPackageBuilder.java
@@ -153,11 +153,10 @@
     }
 
     @Override
-    protected boolean installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream inputStream)
+    protected void installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream inputStream)
             throws DistributionException {
         try {
             distributionContentSerializer.importFromStream(resourceResolver, inputStream);
-            return true;
         } finally {
             IOUtils.closeQuietly(inputStream);
         }
diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/InMemoryDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/packaging/impl/InMemoryDistributionPackageBuilder.java
index d7e7cd1..ad6b4a1 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/InMemoryDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/InMemoryDistributionPackageBuilder.java
@@ -111,12 +111,11 @@
     }
 
     @Override
-    protected boolean installPackageInternal(@NotNull ResourceResolver resourceResolver,
+    protected void installPackageInternal(@NotNull ResourceResolver resourceResolver,
                                              @NotNull InputStream inputStream)
             throws DistributionException {
         try {
             serializer.importFromStream(resourceResolver, inputStream);
-            return true;
         } finally {
             IOUtils.closeQuietly(inputStream);
         }
diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageBuilder.java b/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageBuilder.java
index ada62d0..3670f5b 100644
--- a/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageBuilder.java
+++ b/src/main/java/org/apache/sling/distribution/packaging/impl/ResourceDistributionPackageBuilder.java
@@ -160,11 +160,10 @@
     }
 
     @Override
-    protected boolean installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream inputStream)
+    protected void installPackageInternal(@NotNull ResourceResolver resourceResolver, @NotNull InputStream inputStream)
             throws DistributionException {
         try {
             distributionContentSerializer.importFromStream(resourceResolver, inputStream);
-            return true;
         } finally {
             IOUtils.closeQuietly(inputStream);
         }
