diff --git a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/AsymmetricSignature.java b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/AsymmetricSignature.java
index d3f30203de4c1cf83289bcdfe54a85e6d096ea76..93cb4a39f52d6faeda98d989d0809bb047399177 100644
--- a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/AsymmetricSignature.java
+++ b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/AsymmetricSignature.java
@@ -15,7 +15,7 @@ public class AsymmetricSignature extends Signature {
      */
     public AsymmetricSignature(String algorithm, byte[] privateKey, String privateKeyPassword) {
         super(algorithm);
-        this.privateKey = privateKey;
+        this.privateKey = privateKey.clone();
         this.privateKeyPassword = privateKeyPassword;
     }
 
@@ -24,7 +24,7 @@ public class AsymmetricSignature extends Signature {
      * @return privateKey
      */
     public byte[] getPrivateKey() {
-        return privateKey;
+        return privateKey.clone();
     }
 
     /**
diff --git a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Credential.java b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Credential.java
index cb7789cee54d0df2909d9073df1444858d5739f6..3e26d29844ec890430f55aaeecab12ae0ca58b25 100644
--- a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Credential.java
+++ b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Credential.java
@@ -3,5 +3,5 @@ package net.ihe.gazelle.app.accesstokenproviderapi.business;
 /**
  * Credential for an audience
  */
-public abstract class Credential {
+public interface Credential {
 }
diff --git a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Password.java b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Password.java
index 7123a182d92aebecfc6f86fc9bd5f78b599c7656..c0143af4f813a794e08b8e2dd73302b5d9f58532 100644
--- a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Password.java
+++ b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/Password.java
@@ -5,7 +5,7 @@ import java.util.Arrays;
 /**
  * A password
  */
-public class Password extends Credential {
+public class Password implements Credential {
 
     private byte[] value;
 
@@ -13,7 +13,7 @@ public class Password extends Credential {
      * constructor
      */
     public Password(byte[] value) {
-        this.value = value;
+        this.value = value.clone();
     }
 
     /**
@@ -21,7 +21,7 @@ public class Password extends Credential {
      * @return value
      */
     public byte[] getValue() {
-        return value;
+        return value.clone();
     }
 
     @Override
diff --git a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/PublicKey.java b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/PublicKey.java
index 2803b5b9cbe33305368cc87a7cb00e0ec4ff7bbe..2ba2fe7b76d739648fc5236505daf1b307bd44c5 100644
--- a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/PublicKey.java
+++ b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/PublicKey.java
@@ -5,14 +5,14 @@ import java.util.Arrays;
 /**
  * A public key
  */
-public class PublicKey extends Credential {
+public class PublicKey implements Credential {
     private byte[] key;
 
     /**
      * constructor
      */
     public PublicKey(byte[] key) {
-        this.key = key;
+        this.key = key.clone();
     }
 
     /**
@@ -20,7 +20,7 @@ public class PublicKey extends Credential {
      * @return key
      */
     public byte[] getKey() {
-        return key;
+        return key.clone();
     }
 
     @Override
diff --git a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/testuser/TestUser.java b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/testuser/TestUser.java
index 321d4eada01514f6fd4fad131b567e52ca20d602..2585df370d0834ed20191591beec7a3ad2b3e9f9 100644
--- a/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/testuser/TestUser.java
+++ b/access-token-provider-api/src/main/java/net/ihe/gazelle/app/accesstokenproviderapi/business/testuser/TestUser.java
@@ -1,10 +1,6 @@
 package net.ihe.gazelle.app.accesstokenproviderapi.business.testuser;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Test user used for authentication and token content
@@ -14,8 +10,8 @@ public class TestUser {
     private String userId;
     private List<String> givenNames = new ArrayList<>();
     private String lastName;
-    private Date birthDate; //fixme Date ?
-    private String gender; //fixme String ?
+    private Date birthDate;
+    private String gender;
     private Map<String, String> extensions = new HashMap<>();
 
     /**
@@ -56,7 +52,7 @@ public class TestUser {
      * @return birthDate
      */
     public Date getBirthDate() {
-        return birthDate;
+        return (Date) birthDate.clone();
     }
 
     /**
@@ -65,7 +61,7 @@ public class TestUser {
      * @param birthDate the birthDate
      */
     public void setBirthDate(Date birthDate) {
-        this.birthDate = birthDate;
+        this.birthDate = (Date) birthDate.clone();
     }
 
     /**