diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java b/core/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
index 21f6b54..8104b96 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/MockJcrSlingRepository.java
@@ -40,6 +40,9 @@
 
     private Repository repository;
 
+    /**
+     * @param componentContext Component context
+     */
     @Activate
     protected void activate(ComponentContext componentContext) {
         repository = MockJcr.newRepository();
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelper.java b/core/src/main/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelper.java
index c75f041..7e3fdb9 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelper.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/MockSlingScriptHelper.java
@@ -44,6 +44,11 @@
     private final @NotNull BundleContext bundleContext;
     private SlingScript script;
 
+    /**
+     * @param request Sling HTTP servlet request
+     * @param response Sling HTTP servlet response
+     * @param bundleContext OSGi bundle context
+     */
     public MockSlingScriptHelper(@NotNull final SlingHttpServletRequest request, @NotNull final SlingHttpServletResponse response,
             @NotNull final BundleContext bundleContext) {
         this.request = request;
@@ -97,6 +102,9 @@
         return this.script;
     }
 
+    /**
+     * @param script Script
+     */
     public void setScript(@NotNull SlingScript script) {
         this.script = script;
     }
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScanner.java b/core/src/main/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScanner.java
index 56cd2d1..d0c1370 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScanner.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/NodeTypeDefinitionScanner.java
@@ -219,6 +219,9 @@
         return new ArrayList<String>(ManifestScanner.getValues("Sling-Nodetypes"));
     }
 
+    /**
+     * @return Instance
+     */
     public static NodeTypeDefinitionScanner get() {
         return SINGLETON;
     }
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
index 23cd9b2..70eb613 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/builder/ContentBuilder.java
@@ -40,6 +40,9 @@
 
     static final String DUMMY_TEMPLATE = "/apps/sample/templates/template1";
 
+    /**
+     * Resource resolver
+     */
     protected final ResourceResolver resourceResolver;
 
     /**
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java b/core/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
index 330a306..5e95fd2 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/context/SlingContextImpl.java
@@ -87,16 +87,59 @@
 
     private static final @NotNull String RESOURCERESOLVERFACTORYACTIVATOR_PID = "org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl";
 
+    /**
+     * Resource resolver factory
+     */
     protected ResourceResolverFactory resourceResolverFactory;
+
+    /**
+     * Resource resolver type
+     */
     protected ResourceResolverType resourceResolverType;
+
+    /**
+     * Resource resolver
+     */
     protected ResourceResolver resourceResolver;
+
+    /**
+     * Sling request
+     */
     protected MockSlingHttpServletRequest request;
+
+    /**
+     * Sling response
+     */
     protected MockSlingHttpServletResponse response;
+
+    /**
+     * Sling script helper
+     */
     protected SlingScriptHelper slingScriptHelper;
+
+    /**
+     * Content loader
+     */
     protected ContentLoader contentLoader;
+
+    /**
+     * Content loader with auto commit after loading content
+     */
     protected ContentLoader contentLoaderAutoCommit;
+
+    /**
+     * Content builder
+     */
     protected ContentBuilder contentBuilder;
+
+    /**
+     * Resource builder
+     */
     protected ResourceBuilder resourceBuilder;
+
+    /**
+     * Unique root helper
+     */
     protected UniqueRoot uniqueRoot;
 
     private Map<String, Object> resourceResolverFactoryActivatorProps;
@@ -114,10 +157,16 @@
         }
     }
 
+    /**
+     * @param props Resolver resolver factory activator properties
+     */
     protected void setResourceResolverFactoryActivatorProps(@Nullable Map<String, Object> props) {
         this.resourceResolverFactoryActivatorProps = props;
     }
 
+    /**
+     * @param registerSlingModelsFromClassPath Register sling models from classpath
+     */
     protected void setRegisterSlingModelsFromClassPath(boolean registerSlingModelsFromClassPath) {
         this.registerSlingModelsFromClassPath = registerSlingModelsFromClassPath;
     }
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java b/core/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
index 88ebcf0..7877b2c 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/context/UniqueRoot.java
@@ -42,6 +42,9 @@
 
     private final SlingContextImpl context;
 
+    /**
+     * Unique path part
+     */
     protected final String uniquePathPart;
 
     private Resource contentRoot;
@@ -50,6 +53,9 @@
 
     private static final Logger log = LoggerFactory.getLogger(UniqueRoot.class);
 
+    /**
+     * @param context Sling context
+     */
     protected UniqueRoot(@NotNull SlingContextImpl context) {
         this.context = context;
         // generate unique path part by using a UUID
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingService.java b/core/src/main/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingService.java
index 749f386..0fcf1fa 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingService.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/services/MockSlingSettingService.java
@@ -55,6 +55,9 @@
         return Collections.unmodifiableSet(this.runModes);
     }
 
+    /**
+     * @param runModes Rund modes
+     */
     public void setRunModes(@NotNull Set<String> runModes) {
         this.runModes = runModes;
     }
@@ -80,17 +83,21 @@
         throw new UnsupportedOperationException();
     }
 
-    // part of Sling API 2.7
+    @Override
     public String getSlingName() {
         throw new UnsupportedOperationException();
     }
 
-    // part of Sling API 2.7
+    @Override
     public String getSlingDescription() {
         throw new UnsupportedOperationException();
     }
 
     // part of Sling Setting Service 1.4.2
+    /**
+     * @param spec run mode spec
+     * @return number of matching run modes
+     */
     public int getBestRunModeMatchCountFromSpec(String spec) {
         throw new UnsupportedOperationException();
     }
diff --git a/core/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfo.java b/core/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfo.java
index cc47581..8bcbf24 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfo.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/sling/servlet/MockRequestPathInfo.java
@@ -33,6 +33,9 @@
         this(null);
     }
 
+    /**
+     * @param resourceResolver Resource resolver
+     */
     public MockRequestPathInfo(ResourceResolver resourceResolver) {
         super(resourceResolver);
     }
