diff --git a/source/core-developers/accessing-application-session-request-objects.md b/source/core-developers/accessing-application-session-request-objects.md
index 0988e02..774d1cf 100644
--- a/source/core-developers/accessing-application-session-request-objects.md
+++ b/source/core-developers/accessing-application-session-request-objects.md
@@ -7,45 +7,55 @@
 ---
 
 # Accessing application, session, request objects
+{:.no_toc}
 
-**DEPRECATED???**
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
-The framework provides several access helpers to access Session, Application, Request scopes.
+The framework provides several access helpers to access Request, Session, Application scopes.
+See [Servlet Config Interceptor](servlet-config-interceptor) page to find all the supported interfaces.
 
 ## Accessing from Java
 
-All the JEE scope attribute maps can be accessed via `ActionContext`.
+The best way to access Request, Session or Application scope is to use one of the following interfaces:
+- `ServletRequestAware` - to access Request scope
+- `ServletResponseAware` - to access Response scope
+- `SessionAware` - to access Session scope
+- `ApplicationAware` - to access Application scope
 
-**Accessing servlet scopes**
+Example usage of the interfaces:
 
 ```java
-Map attr = (Map) ActionContext.getContext().get("attr");
-attr.put("myId", myProp);  // Page scope.
+public class MyAction implements ApplicationAware {
+ 
+    private Map<String, Object> application;
 
-Map application = (Map) ActionContext.getContext().get("application");
-application.put("myId", myProp);
-
-Map session = (Map) ActionContext.getContext().get("session");
-session.put("myId", myProp);
-
-Map request = (Map) ActionContext.getContext().get("request");
-request.put("myId", myProp);
+    public void withApplication(Map<String, Object> application) {
+        this.application = application;
+    }
+    
+    public String execute() {
+        application.set("myKey", "myValue");
+        ...
+        return "success";
+    }
+    
+}
 ```
 
-> Do not use `ActionContext.getContext()` in the constructor of your Action class. The values may not be set up, and 
-> the call may return null for getSession().
+Implementing `ServletRequestAware` or `ServletResponseAware` will tie your actions to Servlet objects. Yet using these 
+interfaces and `SessionAware` or `ApplicationAware` combined with the `servletConfig` interceptor, is the best way 
+to access these scopes.
 
-We can also access the `HttpServletRequest` and `HttpServletResponse` objects themselves through `ServletActionContext`. 
-In general this isn't recommended as it will tie our action to the servlet specification.
+### Avoid using ActionContext
 
-**Setting session attribute through session object**
+Using `ActionContext` directly is a bad practice and should be avoided, instead of using 
 
 ```java
-ServletActionContext.getRequest().getSession().put("myId", myProp);
+ActionContext.getContext().getSession().put("myAttribute", "myValue");
 ```
 
-Implementing `ServletRequestAware` or `ServletResponseAware`, combined with the `servletConfig` interceptor, 
-is an alternative way to access the request and response objects, with the same caveat.
+use one of the `*Aware` interfaces above.
 
 ## Accessing from the view (JSP, FreeMarker, etc.)
 
