diff --git a/wasm/clients/assets/ndf.js b/wasm/clients/assets/ndf.js
new file mode 100644
index 0000000000000000000000000000000000000000..f21e4285f045a5152da5a9677bc3b1df60332c3b
--- /dev/null
+++ b/wasm/clients/assets/ndf.js
@@ -0,0 +1 @@
+const ndf = '{"Timestamp":"2022-09-15T20:32:54.969471751Z","Gateways":[{"Id":"aXQ5tSv5SCzO6D5B+mvdfpjpHA/pUSNn0H3aB1DazGcB","Address":"34.218.59.127:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ner0CAERXQ8INuB+0hIvN8BOj398=\\n-----END CERTIFICATE-----\\n","Bin":"NorthAmerica"},{"Id":"MaRqf5zWQ5CNdcU7v7WnFONk4v0OVxSo+GCCy13VH1cB","Address":"35.163.143.85:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ner0CAERXQ8INuB+0hIvN8BOj398=\\n-----END CERTIFICATE-----\\n","Bin":"NorthAmerica"},{"Id":"NdGFG0QsD5Mq3hTDUz72U2XsFrfEuQLCAWsp5KfwhMsB","Address":"34.222.125.145:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ner0CAERXQ8INuB+0hIvN8BOj398=\\n-----END CERTIFICATE-----\\n","Bin":"NorthAmerica"}],"Nodes":[{"Id":"aXQ5tSv5SCzO6D5B+mvdfpjpHA/pUSNn0H3aB1DazGcC","Address":"34.222.234.81:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ndXlQopayrCZupumR32Aj1NvCpew=\\n-----END CERTIFICATE-----\\n","Status":0},{"Id":"MaRqf5zWQ5CNdcU7v7WnFONk4v0OVxSo+GCCy13VH1cC","Address":"34.220.39.172:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ndXlQopayrCZupumR32Aj1NvCpew=\\n-----END CERTIFICATE-----\\n","Status":0},{"Id":"NdGFG0QsD5Mq3hTDUz72U2XsFrfEuQLCAWsp5KfwhMsC","Address":"54.245.59.96:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\ndXlQopayrCZupumR32Aj1NvCpew=\\n-----END CERTIFICATE-----\\n","Status":0}],"Registration":{"Address":"scheduling.default.cmix.rip:11420","ClientRegistrationAddress":"registration.default.cmix.rip:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\nEnretBzQkeKeBwoB2u6NTiOmUjk=\\n-----END CERTIFICATE-----\\n","EllipticPubKey":"44uH5BrNPXpTGNj+0scgp8Q6/8ZSEMx5qWtSqXlA7tk="},"Notification":{"Address":"35.83.235.95:11420","Tls_certificate":"-----BEGIN CERTIFICATE-----\\n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\\nkwtotNMuC4bEiPY2kwcI/5bZrA4=\\n-----END CERTIFICATE-----\\n"},"Udb":{"Id":"83dObgQkTG/OMPdTisCHkRgdFW45NMDCuKUCrVIlPpgD","Cert":"-----BEGIN CERTIFICATE-----\\n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\\nPX9OUpkLAunw8WY78lVFS5KhnVE=\\n-----END CERTIFICATE-----\\n","Address":"44.225.110.44:11420","DhPubKey":"eyJWYWx1ZSI6Mjc0MDEyNDI1OTU4MTc0Mzg2NzU3MTY3NzAyNTYyNzU2MTczMTA3MjQwMjE1MjQ0Mzc2MzM2NzMzNjI2MjYxNzY3MDkzMzUwMTA2MTI3MzM2MzU5OTUzMDc5MTMxMDU5ODEyNjY1NTQ3ODM5NDQ2NjIwMjUzNjQ2MDQwNTI3Mjk5NTc0MTM5OTAxMjExMjcxODgwODUxOTI0MDA3MDcxMzc1MjM5NDc4MzQ2MTI5MDMyNzA2ODYxNzI1MTE5NjkwNzIwNDAyODg0Njg4NTE4Mjc2NTI1NDkwMDEwMDA3NjQ5Nzc3NTY1NjI0OTYxNjQ4OTY2NzA0MTAxMTk2NDczMjM3Njc2NjkyNTE2ODAwODMzMTU3NDUxOTc4MzI3MDg2NDg0Mjk4ODcxOTI1NDQxMDgyNDk3NjUwNTM4NDUyNDQxNTExNzg2NzcyMTQ1MjM2MDkzODEwMjUxMjkwMTM4NTQ5MDYxMzIxNTU0MjI2MTUyMjYxODAxNDY5OTc0NjEzNTkwNzM4NzMyNjY4Njg2MjAxODQ2Mzk4MDE0OTY2ODEzNzA4ODUwMzI5MzkyMDU4Mzg1MzA1MjU4MDE4MTY4MzU5OTc0ODA4NDIwMzMzMjc0ODgxMzI2MTYxNTc2Njk1NjQwNzIwNjQ4MzgyMDM2MjI3NjcyNjY1MDI2NjE4MjU5Mjc3NjI4MjkzNzM1NzU1MTI4MTcwMTE5ODQzODc3MzcxMDM2MzIzMzEyMzAyNDQ0MDc5NTY4MzY4MjMxNTA5MjM3Mjk2MTUwODY4OTc4NDg4ODE0MjE0NTQ1NTQzNTI3NTU0MDE5NzE4MTU2OTgyODQyNjExNDY1MjE2MDg1MDY5NTE5MjgzNzk3NzE2NjM0NzI2MzEzMDQ0OTU5MDg2MzU2ODY5MTQxMDk4MjE1NzAxNDU2MTAzNjY4Nzg0NTQ4ODk3MTIyMDIzNDk1NzU3NTUwMjcwODM0MDY0ODQzMDI1MjQ0MjA1NTIwNzQ5Njc3MTUxMzUzNjU2MjQ4NDE5NDI1MjgzODMxNzU1NzYxMTIzOTU2NTc0MTM1NDYyMTAxODg0NDIxNzYwNTQ1MTk2MjUyNDgzOTAxNDkwOTA0NzIyMjIzMjkwODE2Njk1ODYwMDg0Nzc3NDMwMDY2NjE2MjExNzU0Njc4NzgxMjY3MDA4OTgwMjUxMTAyMDUxNjgzODQxMTMwNDUwNjkyMzQ4NzUyMjczNzk3MTM4OCwiRmluZ2VycHJpbnQiOjE1OTg5NDMzMDQzMTY2NzU4NzU0fQ=="},"E2e":{"Prime":"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF","Small_prime":"","Generator":"2"},"Cmix":{"Prime":"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF","Small_prime":"","Generator":"2"},"AddressSpace":[{"Size":18,"Timestamp":"2022-09-15T20:32:54.878604Z"}],"ClientVersion":"4.0.0","WhitelistedIds":[],"WhitelistedIpAddresses":[],"RateLimits":{"Capacity":28000,"LeakedTokens":4000,"LeakDuration":86400000000000}}'
\ No newline at end of file
diff --git a/wasm/clients/assets/utils.js b/wasm/clients/assets/utils.js
index 980b6d91122d25d72abfc87587962b7674adf8b0..88bf6e0cf2be00eef0ee51d245ac2e4bbf906a7f 100644
--- a/wasm/clients/assets/utils.js
+++ b/wasm/clients/assets/utils.js
@@ -55,6 +55,10 @@ async function sleepUntil(f, timeoutMs) {
 // error messages to an element.
 function newHtmlConsole(elem) {
     return {
+        overwrite: function (message) {
+            console.log(message)
+            elem.innerHTML = message
+        },
         log: function (message) {
             console.log(message)
             elem.innerHTML += "<p>" + message + "</p>"
diff --git a/wasm/clients/channels/channels.js b/wasm/clients/channels/channels.js
index 9bda901acaccf6275a3f64d5fe4f4843e221e19d..88f9813be839ee808b7cc1ad0ba779d37f0dc8d4 100644
--- a/wasm/clients/channels/channels.js
+++ b/wasm/clients/channels/channels.js
@@ -47,39 +47,6 @@ async function Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn, ndf
     htmlConsole.log("Loaded Cmix.")
     console.log("Loaded Cmix: " + JSON.stringify(net))
 
-    // Get reception identity (automatically created if one does not exist)
-    const identityStorageKey = "identityStorageKey";
-    let identity;
-    try {
-        htmlConsole.log("Getting reception identity.")
-        identity = LoadReceptionIdentity(identityStorageKey, net.GetID());
-    } catch (e) {
-        htmlConsole.log("No reception identity found. Generating a new one.")
-
-        // If no extant xxdk.ReceptionIdentity, generate and store a new one
-        identity = await net.MakeReceptionIdentity();
-
-        StoreReceptionIdentity(identityStorageKey, identity, net.GetID());
-    }
-
-    let authCallbacks = {
-        Confirm: function (contact, receptionId, ephemeralId, roundId) {
-            htmlConsole.log("Confirm: from " + Uint8ArrayToBase64(receptionId) + " on round " + roundId)
-        },
-        Request: async function (contact, receptionId, ephemeralId, roundId) {
-            htmlConsole.log("Request: from " + Uint8ArrayToBase64(receptionId) + " on round " + roundId)
-        },
-        Reset: function (contact, receptionId, ephemeralId, roundId) {
-            htmlConsole.log("Reset: from " + Uint8ArrayToBase64(receptionId) + " on round " + roundId)
-        }
-    }
-
-
-    // Create an E2E client
-    // Pass in auth object which controls auth callbacks for this client
-    htmlConsole.log("Logging in E2E")
-    let e2eClient = Login(net.GetID(), authCallbacks, identity, new Uint8Array(null));
-    htmlConsole.log("Logged in E2E")
 
     ////////////////////////////////////////////////////////////////////////////
     // Start network threads                                                  //
@@ -143,7 +110,7 @@ async function Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn, ndf
 
         const username = usernameInput1.value
 
-        joinChannel(htmlConsole, messageConsole, e2eClient, username,
+        joinChannel(htmlConsole, messageConsole, net, username,
             chanGen.Channel, chanNameOutput, chanDescriptionOutput,
             chanIdOutput, prettyPrintOutput)
     })
@@ -152,7 +119,7 @@ async function Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn, ndf
 
     joinChannelSubmit.addEventListener("click", () => {
         const username = usernameInput2.value
-        joinChannel(htmlConsole, messageConsole, e2eClient, username,
+        joinChannel(htmlConsole, messageConsole, net, username,
             prettyPrintInput.value, chanNameOutput, chanDescriptionOutput,
             chanIdOutput, prettyPrintOutput)
     })
@@ -160,28 +127,47 @@ async function Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn, ndf
 
 }
 
-async function joinChannel(htmlConsole, messageConsole, e2eClient, username,
+async function joinChannel(htmlConsole, messageConsole, net, username,
                            prettyPrint, nameOutput, descriptionOutput, idOutput,
                            prettyPrintOutput) {
    document.getElementById("makeChannel").style.display = "none";
    document.getElementById("joinChannel").style.display = "none";
-   document.getElementById("messageLabel").innerHTML += " as " + username;
+   document.getElementById("messageLabel").innerHTML += " as <em>" + username + "</em>";
 
+   // The eventModel is used only without the database
     let eventModel = {
         JoinChannel: function (channel){},
         LeaveChannel: function (channelID){},
         ReceiveMessage: function (channelID, messageID, senderUsername, text, timestamp, lease, roundId, status){
-            messageConsole.log("<em>" + senderUsername + " said: </em>" + text)
-            htmlConsole.log(senderUsername + ": " + text)
+            messageConsole.overwrite(text)
+            // htmlConsole.log(senderUsername + ": " + text)
         },
         ReceiveReply: function (channelID, messageID, reactionTo, senderUsername, text, timestamp, lease, roundId, status){},
         ReceiveReaction: function (channelID, messageID, reactionTo, senderUsername, reaction, timestamp, lease, roundId, status){},
         UpdateSentStatus: function (messageID, status){},
     }
 
-    let chanManager = NewChannelsManagerDummyNameService(e2eClient.GetID(), username, eventModel)
+    // This is for use without the database
+    let chanManager = NewChannelsManagerDummyNameService(net.GetID(), username, eventModel)
+
+    // Use this when using the database
+    // let chanManager = NewChannelsManagerWithIndexedDbDummyNameService(net.GetID(), username)
+
+    // let chanInfo = JSON.parse(dec.decode(chanManager.JoinChannel(prettyPrint)))
+    let chanInfo;
+
+    try {
+        chanInfo = JSON.parse(dec.decode(chanManager.JoinChannel(prettyPrint)))
+    } catch (e) {
+        console.log(e)
+        if (e.toString().includes("the channel cannot be added because it already exists")) {
+            chanManager.ReplayChannelFromPrettyPrint(prettyPrint)
+            chanInfo = JSON.parse(dec.decode(GetChannelInfo(prettyPrint)))
+        } else {
+            throw e
+        }
+    }
 
-    let chanInfo = JSON.parse(dec.decode(chanManager.JoinChannel(prettyPrint)))
 
     nameOutput.value = chanInfo.Name
     descriptionOutput.value = chanInfo.Description
@@ -195,9 +181,23 @@ async function joinChannel(htmlConsole, messageConsole, e2eClient, username,
     messageInput.disabled = false
     sendMessageSubmit.addEventListener("click", async () => {
         let message = messageInput.value
-        messageInput.value = ""
-        let chanSendReportJson = await chanManager.SendMessage(
-            Base64ToUint8Array(chanInfo.ChannelID), message, 30000, new Uint8Array(null))
-        htmlConsole.log("chanSendReport: " + dec.decode(chanSendReportJson))
+        if (message !== "") {
+            messageInput.value = ""
+            let chanSendReportJson = await chanManager.SendMessage(
+                Base64ToUint8Array(chanInfo.ChannelID), message, 30000, new Uint8Array(null))
+            htmlConsole.log("chanSendReport: " + dec.decode(chanSendReportJson))
+        }
+    })
+
+    messageInput.addEventListener("keypress", async e => {
+        if (e.key === "Enter") {
+            let message = messageInput.value
+            if (message !== "") {
+                messageInput.value = ""
+                let chanSendReportJson = await chanManager.SendMessage(
+                    Base64ToUint8Array(chanInfo.ChannelID), message, 30000, new Uint8Array(null))
+                htmlConsole.log("chanSendReport: " + dec.decode(chanSendReportJson))
+            }
+        }
     })
 }
\ No newline at end of file
diff --git a/wasm/clients/channels/index.html b/wasm/clients/channels/index.html
index d84e160cce689f4b628617db9fcdb860f9f75dce..aa829dd61010f8ab02b8182289ae2c63fc2798f6 100644
--- a/wasm/clients/channels/index.html
+++ b/wasm/clients/channels/index.html
@@ -9,14 +9,16 @@
 <html lang="en">
 <head>
 	<meta charset="UTF-8">
-	<title>Channel Client</title>
+	<title>The Internet Speakeasy Client</title>
 
 	<link rel="stylesheet" type="text/css" href="../assets/styles.css">
+	<link rel="icon" type="image/x-icon" href="favicon.ico">
 
 
 	<script type="text/javascript" src="channels.js"></script>
 	<script type="text/javascript" src="../assets/utils.js"></script>
 	<script type="text/javascript" src="../assets/wasm_exec.js"></script>
+	<script type="text/javascript" src="../assets/ndf.js"></script>
 	<script>
         const go = new Go();
         const binPath = '../assets/xxdk.wasm'
@@ -44,34 +46,46 @@
             const statePath = 'channelPath';
             const statePass = 'password';
 
-            document.getElementById('ndfInput').addEventListener('change', e => {
-                let reader = new FileReader();
-                reader.onload = async function (e) {
-                    try {
-                        await Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn,
-                            e.target.result, statePath, statePass);
-                    } catch (e) {
-                        htmlConsole.error(e)
-                    }
-                };
-                reader.readAsText(e.target.files[0]);
+            // document.getElementById('ndfInput').addEventListener('change', e => {
+            //     let reader = new FileReader();
+            //     reader.onload = async function (e) {
+            //         try {
+            //             await Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn,
+            //                 e.target.result, statePath, statePass);
+            //         } catch (e) {
+            //             htmlConsole.error(e)
+            //         }
+            //     };
+            //     reader.readAsText(e.target.files[0]);
+            // }, false);
+
+            document.getElementById('startNetwork').addEventListener('click', async e => {
+                try {
+                    await Channels(htmlConsole, messageConsole, stopNetworkFollowerBtn,
+                        ndf, statePath, statePass);
+                } catch (e) {
+                    htmlConsole.error(e)
+                }
             }, false);
 
         });
 	</script>
 </head>
 <body>
-<h1 style="margin-top: 0">Channel Client</h1>
+<h1 style="margin-top: 0">The Internet Speakeasy Client</h1>
 <div class="toolbar">
 	<input type="button" value="Clear localStorage" onclick="localStorage.clear();">
 	<input type="button" value="Download Log File" id="logFileDownload">
 	<input type="button" value="Stop Network Follower" id="stopNetworkFollowerBtn" style="display:none;" >
 </div>
-<p>Selecting an NDF will start the client.</p>
 <form id="startCmix">
-	<div>
+<!--	<div>
 		<label for="ndfInput">Select NDF file to use <code>ndf</code> variable in JS:</label><br/>
 		<input type="file" id="ndfInput" required/>
+	</div>-->
+	<div>
+		<p>Click on the button below to connect to the network and start the client.</p>
+		<input type="button" id="startNetwork" value="Connect to Network"/>
 	</div>
 </form>
 <form id="makeChannel">
@@ -80,14 +94,14 @@
 		<input type="text" id="username1" disabled/>
 	</div>
 	<div>
-		<label for="chanName">Channel Name</label><br/>
+		<label for="chanName">Speakeasy Name</label><br/>
 		<input type="text" id="chanName" required disabled/>
 	</div>
 	<div>
-		<label for="chanDescription">Channel Description</label><br/>
+		<label for="chanDescription">Speakeasy Description</label><br/>
 		<input type="text" id="chanDescription" required disabled/>
 	</div>
-	<input type="button" value="Make Channel" id="makeChannelSubmit" disabled />
+	<input type="button" value="Make Speakeasy" id="makeChannelSubmit" disabled />
 </form>
 <form id="joinChannel">
 	<div>
@@ -95,26 +109,26 @@
 		<input type="text" id="username2" disabled/>
 	</div>
 	<div>
-		<label for="prettyPrintInput">Channel to Join</label><br/>
+		<label for="prettyPrintInput">Speakeasy to Join</label><br/>
 		<input type="text" id="prettyPrintInput" required disabled/>
-		<input type="button" value="Join Channel" id="joinChannelSubmit" disabled/>
+		<input type="button" value="Join Speakeasy" id="joinChannelSubmit" disabled/>
 	</div>
 </form>
 <form id="channelInfo">
 <div>
-	<label for="chanNameOutput">Channel Name</label><br/>
+	<label for="chanNameOutput">Speakeasy Name</label><br/>
 	<input type="text" id="chanNameOutput" disabled/>
 </div>
 <div>
-	<label for="chanDescriptionOutput">Channel Description</label><br/>
+	<label for="chanDescriptionOutput">Speakeasy Description</label><br/>
 	<input type="text" id="chanDescriptionOutput" disabled/>
 </div>
 <div>
-	<label for="chanIdOutput">Channel ID</label><br/>
+	<label for="chanIdOutput">Speakeasy ID</label><br/>
 	<input type="text" id="chanIdOutput" disabled/>
 </div>
 <div>
-	<label for="prettyPrintOutput">Channel Share</label><br/>
+	<label for="prettyPrintOutput">Speakeasy Share</label><br/>
 	<input type="text" id="prettyPrintOutput" disabled/>
 </div>
 </form>