diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/AbstractDerivedAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/AbstractDerivedAction.java
index fba7505..49dedfb 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/AbstractDerivedAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/AbstractDerivedAction.java
@@ -121,10 +121,7 @@
 
     protected Element setupEKReference(WSSecDerivedKeyBase derivedKeyBase,
                                        WSSecHeader securityHeader,
-                                        WSPasswordCallback passwordCallback,
                                         SignatureEncryptionActionToken actionToken,
-                                        boolean use200512Namespace,
-                                        Document doc,
                                         String keyTransportAlgorithm,
                                         String mgfAlgorithm,
                                         SecretKey symmetricKey) throws WSSecurityException {
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
index a4daaad..05345d6 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
@@ -100,7 +100,7 @@
                 symmetricKey = keyGen.generateKey();
             }
 
-            tokenElement = setupEncryptedKeyTokenReference(reqData, encryptionToken, wsEncrypt, passwordCallback, doc, symmetricKey);
+            tokenElement = setupEncryptedKeyTokenReference(reqData, encryptionToken, wsEncrypt, symmetricKey);
         } else if ("SecurityContextToken".equals(derivedKeyTokenReference)) {
             tokenElement = setupSCTTokenReference(reqData, encryptionToken, wsEncrypt, passwordCallback, doc);
         }
@@ -167,15 +167,13 @@
 
     private Element setupEncryptedKeyTokenReference(
         RequestData reqData, EncryptionActionToken encryptionToken,
-        WSSecDKEncrypt wsEncrypt, WSPasswordCallback passwordCallback,
-        Document doc, SecretKey symmetricKey
+        WSSecDKEncrypt wsEncrypt, SecretKey symmetricKey
     ) throws WSSecurityException {
         if (symmetricKey == null) {
             setupEKReference(wsEncrypt, reqData.getSignatureToken());
             return null;
         } else {
-            return setupEKReference(wsEncrypt, reqData.getSecHeader(), passwordCallback, encryptionToken,
-                                              reqData.isUse200512Namespace(), doc, null, null, symmetricKey);
+            return setupEKReference(wsEncrypt, reqData.getSecHeader(), encryptionToken, null, null, symmetricKey);
         }
     }
 
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
index 813541e..97d0324 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
@@ -102,7 +102,7 @@
                 symmetricKey = keyGen.generateKey();
             }
 
-            tokenElement = setupEncryptedKeyTokenReference(reqData, signatureToken, wsSign, passwordCallback, doc, symmetricKey);
+            tokenElement = setupEncryptedKeyTokenReference(reqData, signatureToken, wsSign, symmetricKey);
         } else if ("SecurityContextToken".equals(derivedKeyTokenReference)) {
             tokenElement = setupSCTTokenReference(reqData, signatureToken, wsSign, passwordCallback, doc);
         } else {
@@ -170,16 +170,14 @@
 
     private Element setupEncryptedKeyTokenReference(
                                         RequestData reqData, SignatureActionToken signatureToken,
-                                        WSSecDKSign wsSign, WSPasswordCallback passwordCallback,
-                                        Document doc, SecretKey symmetricKey
+                                        WSSecDKSign wsSign, SecretKey symmetricKey
     ) throws WSSecurityException {
 
         if (symmetricKey == null) {
             setupEKReference(wsSign, reqData.getEncryptionToken());
             return null;
         } else {
-            return setupEKReference(wsSign, reqData.getSecHeader(), passwordCallback, signatureToken,
-                                              reqData.isUse200512Namespace(), doc, null, null, symmetricKey);
+            return setupEKReference(wsSign, reqData.getSecHeader(), signatureToken, null, null, symmetricKey);
         }
     }
 
