diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
index 6b71fe0..c1172ff 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
@@ -412,7 +412,7 @@
                 }
                 try {
                     StanzaHandler stanzaHandler = receivingSession.getServerRuntimeContext().getHandler(stanza);
-                    inboundStanzaProtocolWorker.processStanza(receivingSession, sessionStateHolder, stanza,
+                    inboundStanzaProtocolWorker.processStanza(serverRuntimeContext, receivingSession, sessionStateHolder, stanza,
                             stanzaHandler);
                 } catch (Exception e) {
                     relayResult.addProcessingError(new DeliveryException("no relay to non-authenticated sessions"));
@@ -450,7 +450,7 @@
                 }
                 try {
                     StanzaHandler stanzaHandler = sessionContext.getServerRuntimeContext().getHandler(stanza);
-                    inboundStanzaProtocolWorker.processStanza(sessionContext, sessionStateHolder, stanza,
+                    inboundStanzaProtocolWorker.processStanza(serverRuntimeContext, sessionContext, sessionStateHolder, stanza,
                             stanzaHandler);
                 } catch (Exception e) {
                     relayResult.addProcessingError(new DeliveryException(e));
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
index e9139ce..d82a3f9 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
@@ -189,7 +189,7 @@
         }
         
         try {
-            stateAwareProtocolWorker.processStanza(sessionContext, sessionStateHolder, stanza, stanzaHandler);
+            stateAwareProtocolWorker.processStanza(serverRuntimeContext, sessionContext, sessionStateHolder, stanza, stanzaHandler);
         } catch (Exception e) {
             logger.error("error executing handler {} with stanza {}", stanzaHandler.getClass().getName(),
                     DenseStanzaLogRenderer.render(stanza));
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
index 4897905..88482b5 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
@@ -20,18 +20,20 @@
 package org.apache.vysper.xmpp.protocol;
 
 import org.apache.vysper.xmpp.server.InternalSessionContext;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
- * this handler is aware of the session state and can act accordingly.
- * for every session state, a dedicated implementation exists.
- * the most interesting case is "authenticated", where the "common" XMPP happens (iq, message, presence)
- * special treatment has to be given to other states, which cover session handshake and shutdown.
+ * this handler is aware of the session state and can act accordingly. for every
+ * session state, a dedicated implementation exists. the most interesting case
+ * is "authenticated", where the "common" XMPP happens (iq, message, presence)
+ * special treatment has to be given to other states, which cover session
+ * handshake and shutdown.
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
 public interface StateAwareProtocolWorker {
 
-    void processStanza(InternalSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza,
-					   StanzaHandler stanzaHandler);
+    void processStanza(ServerRuntimeContext serverRuntimeContext, InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, StanzaHandler stanzaHandler);
 }
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
index 9f3e354..bebdefc 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
@@ -28,6 +28,7 @@
 import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
 import org.apache.vysper.xmpp.protocol.StateAwareProtocolWorker;
 import org.apache.vysper.xmpp.server.InternalSessionContext;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
@@ -46,24 +47,24 @@
 
     public abstract SessionState getHandledState();
 
-    public void processStanza(InternalSessionContext sessionContext, SessionStateHolder sessionStateHolder,
-            Stanza stanza, StanzaHandler stanzaHandler) {
+    public void processStanza(ServerRuntimeContext serverRuntimeContext, InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, StanzaHandler stanzaHandler) {
         boolean proceed = checkState(sessionContext, sessionStateHolder, stanza, stanzaHandler);
         if (!proceed)
             return; // TODO close stream?
 
-        executeHandler(sessionContext, sessionStateHolder, stanza, stanzaHandler);
+        executeHandler(serverRuntimeContext, sessionContext, sessionStateHolder, stanza, stanzaHandler);
     }
 
     protected boolean checkState(InternalSessionContext sessionContext, SessionStateHolder sessionStateHolder,
             Stanza stanza, StanzaHandler stanzaHandler) {
-        return getHandledState() == sessionContext.getState();
+        return sessionContext != null && getHandledState() == sessionContext.getState();
     }
 
-    private void executeHandler(InternalSessionContext sessionContext, SessionStateHolder sessionStateHolder,
-            Stanza stanza, StanzaHandler stanzaHandler) {
+    private void executeHandler(ServerRuntimeContext serverRuntimeContext, InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, StanzaHandler stanzaHandler) {
         try {
-            stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, sessionContext.getServerRuntimeContext(),
+            stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, serverRuntimeContext,
                     isProcessingOutboundStanzas(), sessionContext, sessionStateHolder);
         } catch (ProtocolException e) {
             ResponseWriter.handleProtocolError(e, sessionContext, stanza);
