diff --git a/pom.xml b/pom.xml
index 5ce4e6b..4b7e1ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -140,7 +140,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
-            <version>2.4.0</version>
+            <version>2.21.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/models/impl/ExportServlet.java b/src/main/java/org/apache/sling/models/impl/ExportServlet.java
index 29c980e..736ba10 100644
--- a/src/main/java/org/apache/sling/models/impl/ExportServlet.java
+++ b/src/main/java/org/apache/sling/models/impl/ExportServlet.java
@@ -32,12 +32,13 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.script.SimpleBindings;
+import javax.script.Bindings;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.scripting.LazyBindings;
 import org.apache.sling.api.scripting.SlingBindings;
 import org.apache.sling.api.scripting.SlingScriptHelper;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
@@ -125,7 +126,7 @@
 
     private void addScriptBindings(SlingScriptHelper scriptHelper, SlingHttpServletRequest request, SlingHttpServletResponse response)
             throws IOException {
-        SimpleBindings bindings = new SimpleBindings();
+        Bindings bindings = new LazyBindings();
         bindings.put(SLING, scriptHelper);
         bindings.put(RESOURCE, request.getResource());
         bindings.put(SlingModelsScriptEngineFactory.RESOLVER, request.getResource().getResourceResolver());
diff --git a/src/main/java/org/apache/sling/models/impl/ResourceOverridingRequestWrapper.java b/src/main/java/org/apache/sling/models/impl/ResourceOverridingRequestWrapper.java
index 803e040..c37e588 100644
--- a/src/main/java/org/apache/sling/models/impl/ResourceOverridingRequestWrapper.java
+++ b/src/main/java/org/apache/sling/models/impl/ResourceOverridingRequestWrapper.java
@@ -24,7 +24,7 @@
 import static org.apache.sling.api.scripting.SlingBindings.RESPONSE;
 import static org.apache.sling.api.scripting.SlingBindings.SLING;
 
-import javax.script.SimpleBindings;
+import javax.script.Bindings;
 
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.adapter.AdapterManager;
@@ -40,7 +40,7 @@
 
     private final Resource resource;
     private final AdapterManager adapterManager;
-    private final SlingBindings bindings;
+    private final Bindings bindings;
 
     ResourceOverridingRequestWrapper(SlingHttpServletRequest wrappedRequest, Resource resource,
                                             AdapterManager adapterManager, SlingModelsScriptEngineFactory scriptEngineFactory,
@@ -51,7 +51,7 @@
 
         SlingBindings existingBindings = (SlingBindings) wrappedRequest.getAttribute(SlingBindings.class.getName());
 
-        SimpleBindings bindings = new SimpleBindings();
+        bindings = new SlingBindings();
         if (existingBindings != null) {
             bindings.put(SLING, existingBindings.getSling());
             bindings.put(RESPONSE, existingBindings.getResponse());
@@ -64,12 +64,6 @@
         bindings.put(SlingModelsScriptEngineFactory.RESOLVER, resource.getResourceResolver());
 
         scriptEngineFactory.invokeBindingsValuesProviders(bindingsValuesProvidersByContext, bindings);
-
-        SlingBindings slingBindings = new SlingBindings();
-        slingBindings.putAll(bindings);
-
-        this.bindings = slingBindings;
-
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/models/impl/SlingModelsScriptEngineFactory.java b/src/main/java/org/apache/sling/models/impl/SlingModelsScriptEngineFactory.java
index 0b81609..bd6d40d 100644
--- a/src/main/java/org/apache/sling/models/impl/SlingModelsScriptEngineFactory.java
+++ b/src/main/java/org/apache/sling/models/impl/SlingModelsScriptEngineFactory.java
@@ -23,9 +23,9 @@
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 
+import javax.script.Bindings;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineFactory;
-import javax.script.SimpleBindings;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -74,7 +74,7 @@
         return null;
     }
 
-    void invokeBindingsValuesProviders(BindingsValuesProvidersByContext bindingsValuesProvidersByContext, SimpleBindings bindings) {
+    void invokeBindingsValuesProviders(BindingsValuesProvidersByContext bindingsValuesProvidersByContext, Bindings bindings) {
         final Collection<BindingsValuesProvider> bindingsValuesProviders =
                 bindingsValuesProvidersByContext.getBindingsValuesProviders(this, SlingModelsScriptEngineFactory.BINDINGS_CONTEXT);
 
