diff --git a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap11Header.java b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap11Header.java
index 9ec4a7b..a132272 100644
--- spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap11Header.java
+++ spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap11Header.java
@@ -48,7 +48,7 @@ class AxiomSoap11Header extends AxiomSoapHeader implements Soap11Header {
 		if (!ObjectUtils.isEmpty(actors)) {
 			rolePlayer = new RolePlayer() {
 
-				public List<?> getRoles() {
+				public List<String> getRoles() {
 					return Arrays.asList(actors);
 				}
 
diff --git a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap12Header.java b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap12Header.java
index b8e2049..92882a8 100644
--- spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap12Header.java
+++ spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoap12Header.java
@@ -88,7 +88,7 @@ class AxiomSoap12Header extends AxiomSoapHeader implements Soap12Header {
 		if (!ObjectUtils.isEmpty(roles)) {
 			rolePlayer = new RolePlayer() {
 
-				public List<?> getRoles() {
+				public List<String> getRoles() {
 					return Arrays.asList(roles);
 				}
 
diff --git a/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapHeader.java b/spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapHeader.java
index f88c902..7e70a95 100644
--- spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapHeader.java
+++ spring-ws-core/src/main/java/org/springframework/ws/soap/axiom/AxiomSoapHeader.java
@@ -114,9 +114,9 @@ abstract class AxiomSoapHeader extends AxiomSoapElement implements SoapHeader {
 
 	protected class AxiomSoapHeaderElementIterator implements Iterator<SoapHeaderElement> {
 
-		private final Iterator<SOAPHeaderBlock> axiomIterator;
+		private final Iterator<? extends OMElement> axiomIterator;
 
-		protected AxiomSoapHeaderElementIterator(Iterator<SOAPHeaderBlock> axiomIterator) {
+		protected AxiomSoapHeaderElementIterator(Iterator<? extends OMElement> axiomIterator) {
 			this.axiomIterator = axiomIterator;
 		}
 
@@ -128,7 +128,7 @@ abstract class AxiomSoapHeader extends AxiomSoapElement implements SoapHeader {
 		@Override
 		public SoapHeaderElement next() {
 			try {
-				SOAPHeaderBlock axiomHeaderBlock = axiomIterator.next();
+				SOAPHeaderBlock axiomHeaderBlock = (SOAPHeaderBlock)axiomIterator.next();
 				return new AxiomSoapHeaderElement(axiomHeaderBlock, getAxiomFactory());
 			}
 			catch (OMException ex) {
