diff --git a/.gitignore b/.gitignore
index c8ac704d51407c2dcf8f4b852d67ec70f19aa010..21e66f74a1a12e4080fe67089bba55bc84b697f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,8 @@ bin/*
 *results*
 */.udb-cMix-session
 blob*
+junk*
+
 # Vim swap files
 *.swp
 *.swo
diff --git a/basice2e/clients.goldoutput/client25.txt b/basice2e/clients.goldoutput/client25.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d05dd8b1be845f51df490de609c5e07b16516386
--- /dev/null
+++ b/basice2e/clients.goldoutput/client25.txt
@@ -0,0 +1,27 @@
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Josh25 to myself, without E2E Encryption
+Message received: Hello from Josh25 to myself, without E2E Encryption
+Received 1
+Authentication channel request from: AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD
+Received 0
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Received 5
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Sending to AtBThtTr7VCMJkY5BjfCjrQ/RhuQ3KOpsmNAWH55zIgD: Hello from Josh25, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Jonah26, with E2E Encryption
+Received 5
diff --git a/basice2e/clients.goldoutput/client26.txt b/basice2e/clients.goldoutput/client26.txt
new file mode 100644
index 0000000000000000000000000000000000000000..85a98b6184edd05e0f97d76f9495c52f33d52b5f
--- /dev/null
+++ b/basice2e/clients.goldoutput/client26.txt
@@ -0,0 +1,25 @@
+WARNING: unsafe channel creation enabled
+Adding authenticated channel for: sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD
+Received 0
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Received 5
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Sending to sCvJTLxvVZKglcBfTcQu0830+OhbF5MS8uOGw7v8ewsD: Hello from Jonah26, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Message received: Hello from Josh25, with E2E Encryption
+Received 5
diff --git a/basice2e/permissioning.yaml b/basice2e/permissioning.yaml
index 3b904d38efb9947f40201b0999a534fb21ca00a6..5b72acb20d7bd7401eabf81c6b058d3caaf4d89c 100644
--- a/basice2e/permissioning.yaml
+++ b/basice2e/permissioning.yaml
@@ -34,6 +34,10 @@ allowLocalIPs: true
 disableNDFPruning: true
 permissiveIPChecking: true
 
+# How long rounds will be tracked by gateways. Rounds (and messages as an extension)
+# prior to this period are not guaranteed to be delivered to clients.
+# Expects duration in"h". (Defaults to 1 weeks (168 hours)
+messageRetentionLimit: "168h"
 
 # "Location of the user discovery contact file.
 udContactPath: "results/udContact.bin"
diff --git a/basice2e/run.sh b/basice2e/run.sh
index 1fccf2ebc7e0413df734a4186d342b8b5ec68d59..72f802545f303afcc942fccb90ba0f7807f75e1e 100755
--- a/basice2e/run.sh
+++ b/basice2e/run.sh
@@ -392,6 +392,8 @@ PIDVAL2=$!
 echo "$CLIENTCMD -- $PIDVAL"
 wait $PIDVAL2
 
+
+########### KEEP COMMENTED OUT, UNTIL TESTS ARE FIXED ################################
 # echo "CREATING USERS for REKEY TEST..."
 # JAKEID=$(../bin/client init -s blob100 -l $CLIENTOUT/client100.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Jake100-contact.bin -v $DEBUGLEVEL)
 # NIAMHID=$(../bin/client init -s blob101 -l $CLIENTOUT/client101.log --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/Niamh101-contact.bin -v $DEBUGLEVEL)
@@ -466,6 +468,94 @@ wait $PIDVAL2
 # wait $PIDVAL
 # wait $PIDVAL2
 
+################### Do not uncomment above, it was meant to be commented out
+
+# Proto user test: client25 and client26 generate a proto user JSON file and close.
+# Both clients are restarted and load from their respective proto user files and attempt to send.
+
+# Generate contact and proto user file for client25
+echo "TESTING PROTO USER FILE..."
+
+CLIENTCMD="timeout 20s ../bin/client  -l $CLIENTOUT/client25.log -s blob11420 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/josh25-contact.bin --protoUserOut $CLIENTOUT/client25Proto.json "
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+
+# Generate contact and proto user file for client 26
+CLIENTCMD="timeout 20s ../bin/client  -l $CLIENTOUT/client26.log -s blob11421 --password hello --ndf results/ndf.json --writeContact $CLIENTOUT/jonah26-contact.bin --protoUserOut $CLIENTOUT/client26Proto.json"
+eval $CLIENTCMD >> $CLIENTOUT/client26.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+
+# Clients will now load from the protoUser file and write to session
+CLIENTCMD="timeout 60s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25  --protoUserPath $CLIENTOUT/client25Proto.json"
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+CLIENTCMD="timeout 60s ../bin/client  $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --protoUserPath $CLIENTOUT/client26Proto.json"
+eval $CLIENTCMD >> $CLIENTOUT/client26.txt || true &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL2"
+wait $PIDVAL
+wait $PIDVAL2
+
+# Continue with E2E testing with session files loaded from proto
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --writeContact $CLIENTOUT/josh25-contact.bin --unsafe -m \"Hello from Josh25 to myself, without E2E Encryption\" "
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --writeContact $CLIENTOUT/jonah26-contact.bin --destfile $CLIENTOUT/josh25-contact.bin --send-auth-request --sendCount 0 --receiveCount 0"
+eval $CLIENTCMD >> $CLIENTOUT/client26.txt || true &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL"
+
+while [ ! -s $CLIENTOUT/jonah26-contact.bin ]; do
+    sleep 1
+    echo -n "."
+done
+
+# Print IDs to console
+TMPID=$(cat $CLIENTOUT/client25.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+JOSHID=${TMPID}
+echo "JOSH ID: $JOSHID"
+TMPID=$(cat $CLIENTOUT/client26.log | grep -a "User\:" | awk -F' ' '{print $5}' | head -1)
+JONAHID=${TMPID}
+echo "JONAH ID: $JONAHID"
+
+## Client 25 will now wait for client 26's E2E Auth channel request and confirm
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destfile $CLIENTOUT/jonah26-contact.bin --sendCount 0 --receiveCount 0"
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+wait $PIDVAL2
+#
+
+# Send E2E messages with written sessions
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26  --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
+eval $CLIENTCMD >> $CLIENTOUT/client26.txt || true &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+wait $PIDVAL2
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client25.log -s blob25 --destid b64:$JONAHID --sendCount 5 --receiveCount 5 -m \"Hello from Josh25, with E2E Encryption\""
+eval $CLIENTCMD >> $CLIENTOUT/client25.txt || true &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client26.log -s blob26 --destid b64:$JOSHID --sendCount 5 --receiveCount 5 -m \"Hello from Jonah26, with E2E Encryption\""
+eval $CLIENTCMD >> $CLIENTOUT/client26.txt || true &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+wait $PIDVAL2
+
 
 # Single-use test: client53 sends message to client52; client52 responds with
 # the same message in the set number of message parts