diff --git a/src/main/java/org/apache/sling/feature/inventoryservice/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java b/src/main/java/org/apache/sling/feature/inventoryservice/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
index fc4e967..9ec7851 100644
--- a/src/main/java/org/apache/sling/feature/inventoryservice/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
+++ b/src/main/java/org/apache/sling/feature/inventoryservice/impl/AbstractRuntimeEnvironment2FeatureModelPrinter.java
@@ -34,23 +34,23 @@
 
     @Override
     protected void onFeature(String featureLocation, BufferedReader reader, PrintWriter printWriter) throws Exception {
-        Feature previousFeature = read(reader, featureLocation);
+        Feature launchFeature = read(reader, featureLocation);
 
-        String groupId = previousFeature.getId().getGroupId();
-        String artifactId = previousFeature.getId().getArtifactId();
-        String version = previousFeature.getId().getArtifactId();
-        String classifier = previousFeature.getId().getArtifactId() + "-RUNTIME";
+        String groupId = launchFeature.getId().getGroupId();
+        String artifactId = launchFeature.getId().getArtifactId();
+        String version = launchFeature.getId().getArtifactId();
+        String classifier = launchFeature.getId().getArtifactId() + "-RUNTIME";
 
         ConversionRequest request = new DefaultConversionRequest()
                                     .setBundleContext(bundleContext)
                                     .setResultId(new ArtifactId(groupId, artifactId, version, classifier, null));
-        Feature currentFeature = generator.scanAndAssemble(request);
+        Feature runtimeFeature = generator.scanAndAssemble(request);
 
-        Feature computedFeature = compute(previousFeature, currentFeature);
+        Feature computedFeature = compute(launchFeature, runtimeFeature);
 
         write(printWriter, computedFeature);
     }
 
-    protected abstract Feature compute(Feature previousFeature, Feature currentFeature);
+    protected abstract Feature compute(Feature launchFeature, Feature runtimeFeature);
 
 }
diff --git a/src/main/java/org/apache/sling/feature/inventoryservice/impl/BaseFeature2CurrentRuntimePrinter.java b/src/main/java/org/apache/sling/feature/inventoryservice/impl/Launch2RuntimeInventoryPrinter.java
similarity index 73%
rename from src/main/java/org/apache/sling/feature/inventoryservice/impl/BaseFeature2CurrentRuntimePrinter.java
rename to src/main/java/org/apache/sling/feature/inventoryservice/impl/Launch2RuntimeInventoryPrinter.java
index 8b4ddcf..8f16ad9 100644
--- a/src/main/java/org/apache/sling/feature/inventoryservice/impl/BaseFeature2CurrentRuntimePrinter.java
+++ b/src/main/java/org/apache/sling/feature/inventoryservice/impl/Launch2RuntimeInventoryPrinter.java
@@ -42,7 +42,7 @@
         @Reference(field = "generator", name = "generator", service = RuntimeEnvironment2FeatureModel.class)
     }
 )
-public class BaseFeature2CurrentRuntimePrinter extends AbstractRuntimeEnvironment2FeatureModelPrinter {
+public class Launch2RuntimeInventoryPrinter extends AbstractRuntimeEnvironment2FeatureModelPrinter {
 
     @Activate
     public void start(BundleContext bundleContext) {
@@ -50,17 +50,17 @@
     }
 
     @Override
-    protected Feature compute(Feature previousFeature, Feature currentFeature) {
+    protected Feature compute(Feature launchFeature, Feature runtimeFeature) {
         Feature featureDiff = compareFeatures(new DefaultDiffRequest()
-                                              .setPrevious(previousFeature)
-                                              .setCurrent(currentFeature)
+                                              .setPrevious(launchFeature)
+                                              .setCurrent(runtimeFeature)
                                               .addIncludeComparator("bundles")
                                               .addIncludeComparator("configurations")
-                                              .setResultId(new ArtifactId(currentFeature.getId().getGroupId(),
-                                                           currentFeature.getId().getArtifactId(), 
-                                                           currentFeature.getId().getVersion(),
-                                                           currentFeature.getId().getClassifier() + "_updater",
-                                                           currentFeature.getId().getType())));
+                                              .setResultId(new ArtifactId(runtimeFeature.getId().getGroupId(),
+                                                                          runtimeFeature.getId().getArtifactId(), 
+                                                                          runtimeFeature.getId().getVersion(),
+                                                                          runtimeFeature.getId().getClassifier() + "_updater",
+                                                                          runtimeFeature.getId().getType())));
 
         return featureDiff;
     }
diff --git a/src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeEnvironment2FeatureModelPrinter.java b/src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeInventoryPrinter.java
similarity index 94%
rename from src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeEnvironment2FeatureModelPrinter.java
rename to src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeInventoryPrinter.java
index a93f9ff..22aa2f6 100644
--- a/src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeEnvironment2FeatureModelPrinter.java
+++ b/src/main/java/org/apache/sling/feature/inventoryservice/impl/RuntimeInventoryPrinter.java
@@ -39,7 +39,7 @@
         @Reference(field = "generator", name = "generator", service = RuntimeEnvironment2FeatureModel.class)
     }
 )
-public final class RuntimeEnvironment2FeatureModelPrinter extends AbstractRuntimeEnvironment2FeatureModelPrinter {
+public final class RuntimeInventoryPrinter extends AbstractRuntimeEnvironment2FeatureModelPrinter {
 
     @Activate
     public void start(BundleContext bundleContext) {
