diff --git a/indexedDb/channels/channelsIndexedDbWorker.js b/indexedDb/impl/channels/channelsIndexedDbWorker.js
similarity index 100%
rename from indexedDb/channels/channelsIndexedDbWorker.js
rename to indexedDb/impl/channels/channelsIndexedDbWorker.js
diff --git a/indexedDb/channels/handlers.go b/indexedDb/impl/channels/handlers.go
similarity index 89%
rename from indexedDb/channels/handlers.go
rename to indexedDb/impl/channels/handlers.go
index 0a56d9584b939cb1f82d759a1e30acacd00bc604..2e9ec98ab2fb4eeea71695f1ac5f107d07fe0e24 100644
--- a/indexedDb/channels/handlers.go
+++ b/indexedDb/impl/channels/handlers.go
@@ -19,7 +19,7 @@ import (
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/crypto/message"
-	mChannels "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels"
+	wChannels "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels"
 	"gitlab.com/elixxir/xxdk-wasm/worker"
 	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/primitives/id"
@@ -38,22 +38,22 @@ type manager struct {
 // RegisterHandlers registers all the reception handlers to manage messages from
 // the main thread for the channels.EventModel.
 func (m *manager) RegisterHandlers() {
-	m.mh.RegisterCallback(mChannels.NewWASMEventModelTag, m.newWASMEventModelHandler)
-	m.mh.RegisterCallback(mChannels.JoinChannelTag, m.joinChannelHandler)
-	m.mh.RegisterCallback(mChannels.LeaveChannelTag, m.leaveChannelHandler)
-	m.mh.RegisterCallback(mChannels.ReceiveMessageTag, m.receiveMessageHandler)
-	m.mh.RegisterCallback(mChannels.ReceiveReplyTag, m.receiveReplyHandler)
-	m.mh.RegisterCallback(mChannels.ReceiveReactionTag, m.receiveReactionHandler)
-	m.mh.RegisterCallback(mChannels.UpdateFromUUIDTag, m.updateFromUUIDHandler)
-	m.mh.RegisterCallback(mChannels.UpdateFromMessageIDTag, m.updateFromMessageIDHandler)
-	m.mh.RegisterCallback(mChannels.GetMessageTag, m.getMessageHandler)
-	m.mh.RegisterCallback(mChannels.DeleteMessageTag, m.deleteMessageHandler)
+	m.mh.RegisterCallback(wChannels.NewWASMEventModelTag, m.newWASMEventModelHandler)
+	m.mh.RegisterCallback(wChannels.JoinChannelTag, m.joinChannelHandler)
+	m.mh.RegisterCallback(wChannels.LeaveChannelTag, m.leaveChannelHandler)
+	m.mh.RegisterCallback(wChannels.ReceiveMessageTag, m.receiveMessageHandler)
+	m.mh.RegisterCallback(wChannels.ReceiveReplyTag, m.receiveReplyHandler)
+	m.mh.RegisterCallback(wChannels.ReceiveReactionTag, m.receiveReactionHandler)
+	m.mh.RegisterCallback(wChannels.UpdateFromUUIDTag, m.updateFromUUIDHandler)
+	m.mh.RegisterCallback(wChannels.UpdateFromMessageIDTag, m.updateFromMessageIDHandler)
+	m.mh.RegisterCallback(wChannels.GetMessageTag, m.getMessageHandler)
+	m.mh.RegisterCallback(wChannels.DeleteMessageTag, m.deleteMessageHandler)
 }
 
 // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an
 // empty slice on success or an error message on failure.
 func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
-	var msg mChannels.NewWASMEventModelMessage
+	var msg wChannels.NewWASMEventModelMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return []byte{}, errors.Errorf(
@@ -84,7 +84,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
 func (m *manager) messageReceivedCallback(
 	uuid uint64, channelID *id.ID, update bool) {
 	// Package parameters for sending
-	msg := &mChannels.MessageReceivedCallbackMessage{
+	msg := &wChannels.MessageReceivedCallbackMessage{
 		UUID:      uuid,
 		ChannelID: channelID,
 		Update:    update,
@@ -97,7 +97,7 @@ func (m *manager) messageReceivedCallback(
 	}
 
 	// Send it to the main thread
-	m.mh.SendMessage(mChannels.MessageReceivedCallbackTag, data)
+	m.mh.SendMessage(wChannels.MessageReceivedCallbackTag, data)
 }
 
 // storeDatabaseName sends the database name to the main thread and waits for
@@ -107,14 +107,14 @@ func (m *manager) messageReceivedCallback(
 func (m *manager) storeDatabaseName(databaseName string) error {
 	// Register response handler with channel that will wait for the response
 	responseChan := make(chan []byte)
-	m.mh.RegisterCallback(mChannels.StoreDatabaseNameTag,
+	m.mh.RegisterCallback(wChannels.StoreDatabaseNameTag,
 		func(data []byte) ([]byte, error) {
 			responseChan <- data
 			return nil, nil
 		})
 
 	// Send encryption status to main thread
-	m.mh.SendMessage(mChannels.StoreDatabaseNameTag, []byte(databaseName))
+	m.mh.SendMessage(wChannels.StoreDatabaseNameTag, []byte(databaseName))
 
 	// Wait for response
 	select {
@@ -140,7 +140,7 @@ func (m *manager) storeDatabaseName(databaseName string) error {
 func (m *manager) storeEncryptionStatus(
 	databaseName string, encryption bool) (bool, error) {
 	// Package parameters for sending
-	msg := &mChannels.EncryptionStatusMessage{
+	msg := &wChannels.EncryptionStatusMessage{
 		DatabaseName:     databaseName,
 		EncryptionStatus: encryption,
 	}
@@ -151,17 +151,17 @@ func (m *manager) storeEncryptionStatus(
 
 	// Register response handler with channel that will wait for the response
 	responseChan := make(chan []byte)
-	m.mh.RegisterCallback(mChannels.EncryptionStatusTag,
+	m.mh.RegisterCallback(wChannels.EncryptionStatusTag,
 		func(data []byte) ([]byte, error) {
 			responseChan <- data
 			return nil, nil
 		})
 
 	// Send encryption status to main thread
-	m.mh.SendMessage(mChannels.EncryptionStatusTag, data)
+	m.mh.SendMessage(wChannels.EncryptionStatusTag, data)
 
 	// Wait for response
-	var response mChannels.EncryptionStatusReply
+	var response wChannels.EncryptionStatusReply
 	select {
 	case responseData := <-responseChan:
 		if err = json.Unmarshal(responseData, &response); err != nil {
@@ -234,7 +234,7 @@ func (m *manager) receiveMessageHandler(data []byte) ([]byte, error) {
 // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID
 // of 0 on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
-	var msg mChannels.ReceiveReplyMessage
+	var msg wChannels.ReceiveReplyMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return zeroUUID, errors.Errorf(
@@ -256,7 +256,7 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
 // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
 // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
-	var msg mChannels.ReceiveReplyMessage
+	var msg wChannels.ReceiveReplyMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return zeroUUID, errors.Errorf(
@@ -278,7 +278,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
 // updateFromUUIDHandler is the handler for wasmModel.UpdateFromUUID. Always
 // returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateFromUUIDHandler(data []byte) ([]byte, error) {
-	var msg mChannels.MessageUpdateInfo
+	var msg wChannels.MessageUpdateInfo
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return nil, errors.Errorf(
@@ -316,7 +316,7 @@ func (m *manager) updateFromUUIDHandler(data []byte) ([]byte, error) {
 // updateFromMessageIDHandler is the handler for wasmModel.UpdateFromMessageID.
 // Always returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateFromMessageIDHandler(data []byte) ([]byte, error) {
-	var msg mChannels.MessageUpdateInfo
+	var msg wChannels.MessageUpdateInfo
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return nil, errors.Errorf(
@@ -364,7 +364,7 @@ func (m *manager) getMessageHandler(data []byte) ([]byte, error) {
 			"failed to JSON unmarshal %T from main thread: %+v", messageID, err)
 	}
 
-	reply := mChannels.GetMessageMessage{}
+	reply := wChannels.GetMessageMessage{}
 
 	msg, err := m.model.GetMessage(messageID)
 	if err != nil {
diff --git a/indexedDb/channels/implementation.go b/indexedDb/impl/channels/implementation.go
similarity index 97%
rename from indexedDb/channels/implementation.go
rename to indexedDb/impl/channels/implementation.go
index f26265bc7f379ea60c56b1adcbf8cadca49c607e..40fbb264e4fc5f3ae507feec0b728bc30276fd19 100644
--- a/indexedDb/channels/implementation.go
+++ b/indexedDb/impl/channels/implementation.go
@@ -13,6 +13,7 @@ import (
 	"crypto/ed25519"
 	"encoding/base64"
 	"encoding/json"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb/impl"
 	"strings"
 	"sync"
 	"syscall/js"
@@ -27,7 +28,6 @@ import (
 	cryptoBroadcast "gitlab.com/elixxir/crypto/broadcast"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/crypto/message"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"gitlab.com/elixxir/xxdk-wasm/utils"
 	"gitlab.com/xx_network/primitives/id"
 )
@@ -67,7 +67,7 @@ func (w *wasmModel) JoinChannel(channel *cryptoBroadcast.Channel) {
 		return
 	}
 
-	_, err = indexedDb.Put(w.db, channelsStoreName, channelObj)
+	_, err = impl.Put(w.db, channelsStoreName, channelObj)
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
 			"Unable to put Channel: %+v", err))
@@ -79,7 +79,7 @@ func (w *wasmModel) LeaveChannel(channelID *id.ID) {
 	parentErr := errors.New("failed to LeaveChannel")
 
 	// Delete the channel from storage
-	err := indexedDb.Delete(w.db, channelsStoreName,
+	err := impl.Delete(w.db, channelsStoreName,
 		js.ValueOf(channelID.String()))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
@@ -126,7 +126,7 @@ func (w *wasmModel) deleteMsgByChannel(channelID *id.ID) error {
 	if err != nil {
 		return errors.WithMessagef(parentErr, "Unable to open Cursor: %+v", err)
 	}
-	ctx, cancel := indexedDb.NewContext()
+	ctx, cancel := impl.NewContext()
 	err = cursorRequest.Iter(ctx,
 		func(cursor *idb.CursorWithValue) error {
 			_, err := cursor.Delete()
@@ -266,7 +266,7 @@ func (w *wasmModel) UpdateFromUUID(uuid uint64, messageID *message.ID,
 	key := js.ValueOf(uuid)
 
 	// Use the key to get the existing Message
-	currentMsg, err := indexedDb.Get(w.db, messageStoreName, key)
+	currentMsg, err := impl.Get(w.db, messageStoreName, key)
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
 			"Unable to get message: %+v", err))
@@ -302,7 +302,7 @@ func (w *wasmModel) UpdateFromMessageID(messageID message.ID,
 	defer w.updateMux.Unlock()
 
 	msgIDStr := base64.StdEncoding.EncodeToString(messageID.Marshal())
-	currentMsgObj, err := indexedDb.GetIndex(w.db, messageStoreName,
+	currentMsgObj, err := impl.GetIndex(w.db, messageStoreName,
 		messageStoreMessageIndex, js.ValueOf(msgIDStr))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
@@ -417,7 +417,7 @@ func (w *wasmModel) receiveHelper(
 	}
 
 	// Store message to database
-	result, err := indexedDb.Put(w.db, messageStoreName, messageObj)
+	result, err := impl.Put(w.db, messageStoreName, messageObj)
 	if err != nil && !strings.Contains(err.Error(),
 		"at least one key does not satisfy the uniqueness requirements") {
 		// Only return non-unique constraint errors so that the case
@@ -488,14 +488,14 @@ func (w *wasmModel) GetMessage(
 // DeleteMessage removes a message with the given messageID from storage.
 func (w *wasmModel) DeleteMessage(messageID message.ID) error {
 	msgId := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes()))
-	return indexedDb.DeleteIndex(w.db, messageStoreName,
+	return impl.DeleteIndex(w.db, messageStoreName,
 		messageStoreMessageIndex, pkeyName, msgId)
 }
 
 // msgIDLookup gets the UUID of the Message with the given messageID.
 func (w *wasmModel) msgIDLookup(messageID message.ID) (*Message, error) {
 	msgIDStr := js.ValueOf(base64.StdEncoding.EncodeToString(messageID.Bytes()))
-	resultObj, err := indexedDb.GetIndex(w.db, messageStoreName,
+	resultObj, err := impl.GetIndex(w.db, messageStoreName,
 		messageStoreMessageIndex, msgIDStr)
 	if err != nil {
 		return nil, err
diff --git a/indexedDb/channels/implementation_test.go b/indexedDb/impl/channels/implementation_test.go
similarity index 96%
rename from indexedDb/channels/implementation_test.go
rename to indexedDb/impl/channels/implementation_test.go
index 3bb61bc4f0c143844e12b1a1d7c1bb0c70381711..8642dc927d085d125ca669a9c9b67a9c144fcece 100644
--- a/indexedDb/channels/implementation_test.go
+++ b/indexedDb/impl/channels/implementation_test.go
@@ -14,7 +14,7 @@ import (
 	"fmt"
 	"github.com/hack-pad/go-indexeddb/idb"
 	"gitlab.com/elixxir/crypto/message"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb/impl"
 	"gitlab.com/elixxir/xxdk-wasm/storage"
 	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/primitives/netTime"
@@ -112,7 +112,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) {
 	}
 
 	// Check the resulting status
-	results, err := indexedDb.Dump(eventModel.db, messageStoreName)
+	results, err := impl.Dump(eventModel.db, messageStoreName)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -127,7 +127,7 @@ func TestWasmModel_DeleteMessage(t *testing.T) {
 	}
 
 	// Check the resulting status
-	results, err = indexedDb.Dump(eventModel.db, messageStoreName)
+	results, err = impl.Dump(eventModel.db, messageStoreName)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -169,7 +169,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) {
 			}
 
 			// Ensure one message is stored
-			results, err2 := indexedDb.Dump(eventModel.db, messageStoreName)
+			results, err2 := impl.Dump(eventModel.db, messageStoreName)
 			if err2 != nil {
 				t.Fatal(err2)
 			}
@@ -183,7 +183,7 @@ func Test_wasmModel_UpdateSentStatus(t *testing.T) {
 				uuid, nil, nil, nil, nil, nil, &expectedStatus)
 
 			// Check the resulting status
-			results, err = indexedDb.Dump(eventModel.db, messageStoreName)
+			results, err = impl.Dump(eventModel.db, messageStoreName)
 			if err != nil {
 				t.Fatal(err)
 			}
@@ -241,7 +241,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) {
 			}
 			eventModel.JoinChannel(testChannel)
 			eventModel.JoinChannel(testChannel2)
-			results, err2 := indexedDb.Dump(eventModel.db, channelsStoreName)
+			results, err2 := impl.Dump(eventModel.db, channelsStoreName)
 			if err2 != nil {
 				t.Fatal(err2)
 			}
@@ -249,7 +249,7 @@ func Test_wasmModel_JoinChannel_LeaveChannel(t *testing.T) {
 				t.Fatalf("Expected 2 channels to exist")
 			}
 			eventModel.LeaveChannel(testChannel.ReceptionID)
-			results, err = indexedDb.Dump(eventModel.db, channelsStoreName)
+			results, err = impl.Dump(eventModel.db, channelsStoreName)
 			if err != nil {
 				t.Fatal(err)
 			}
@@ -401,7 +401,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) {
 			}
 
 			// Check pre-results
-			result, err2 := indexedDb.Dump(eventModel.db, messageStoreName)
+			result, err2 := impl.Dump(eventModel.db, messageStoreName)
 			if err2 != nil {
 				t.Fatal(err2)
 			}
@@ -416,7 +416,7 @@ func Test_wasmModel_deleteMsgByChannel(t *testing.T) {
 			}
 
 			// Check final results
-			result, err = indexedDb.Dump(eventModel.db, messageStoreName)
+			result, err = impl.Dump(eventModel.db, messageStoreName)
 			if err != nil {
 				t.Fatal(err)
 			}
diff --git a/indexedDb/channels/init.go b/indexedDb/impl/channels/init.go
similarity index 98%
rename from indexedDb/channels/init.go
rename to indexedDb/impl/channels/init.go
index 39b0aeb8b3ddbb9d298fb9e446c6bdcb0c463030..70768a14752e50a984741946452fd7702c0d8561 100644
--- a/indexedDb/channels/init.go
+++ b/indexedDb/impl/channels/init.go
@@ -15,7 +15,7 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/v4/channels"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb/impl"
 	"gitlab.com/xx_network/primitives/id"
 	"syscall/js"
 )
@@ -59,7 +59,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher,
 	cb MessageReceivedCallback, storeDatabaseName storeDatabaseNameFn,
 	storeEncryptionStatus storeEncryptionStatusFn) (*wasmModel, error) {
 	// Attempt to open database object
-	ctx, cancel := indexedDb.NewContext()
+	ctx, cancel := impl.NewContext()
 	defer cancel()
 	openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion,
 		func(db *idb.Database, oldVersion, newVersion uint) error {
diff --git a/indexedDb/channels/main.go b/indexedDb/impl/channels/main.go
similarity index 100%
rename from indexedDb/channels/main.go
rename to indexedDb/impl/channels/main.go
diff --git a/indexedDb/channels/model.go b/indexedDb/impl/channels/model.go
similarity index 100%
rename from indexedDb/channels/model.go
rename to indexedDb/impl/channels/model.go
diff --git a/indexedDb/dm/dmIndexedDbWorker.js b/indexedDb/impl/dm/dmIndexedDbWorker.js
similarity index 100%
rename from indexedDb/dm/dmIndexedDbWorker.js
rename to indexedDb/impl/dm/dmIndexedDbWorker.js
diff --git a/indexedDb/dm/handlers.go b/indexedDb/impl/dm/handlers.go
similarity index 88%
rename from indexedDb/dm/handlers.go
rename to indexedDb/impl/dm/handlers.go
index cebe3594f0089fa70392639be2138875443e321e..495e46f3d3d3cd629b2871c31bb48282a6084fbf 100644
--- a/indexedDb/dm/handlers.go
+++ b/indexedDb/impl/dm/handlers.go
@@ -17,8 +17,8 @@ import (
 	"gitlab.com/elixxir/client/v4/dm"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/crypto/fastRNG"
-	mChannels "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels"
-	mDm "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/dm"
+	wChannels "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels"
+	wDm "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/dm"
 	"gitlab.com/elixxir/xxdk-wasm/worker"
 	"gitlab.com/xx_network/crypto/csprng"
 	"time"
@@ -36,18 +36,18 @@ type manager struct {
 // RegisterHandlers registers all the reception handlers to manage messages from
 // the main thread for the channels.EventModel.
 func (m *manager) RegisterHandlers() {
-	m.mh.RegisterCallback(mDm.NewWASMEventModelTag, m.newWASMEventModelHandler)
-	m.mh.RegisterCallback(mDm.ReceiveTag, m.receiveHandler)
-	m.mh.RegisterCallback(mDm.ReceiveTextTag, m.receiveTextHandler)
-	m.mh.RegisterCallback(mDm.ReceiveReplyTag, m.receiveReplyHandler)
-	m.mh.RegisterCallback(mDm.ReceiveReactionTag, m.receiveReactionHandler)
-	m.mh.RegisterCallback(mDm.UpdateSentStatusTag, m.updateSentStatusHandler)
+	m.mh.RegisterCallback(wDm.NewWASMEventModelTag, m.newWASMEventModelHandler)
+	m.mh.RegisterCallback(wDm.ReceiveTag, m.receiveHandler)
+	m.mh.RegisterCallback(wDm.ReceiveTextTag, m.receiveTextHandler)
+	m.mh.RegisterCallback(wDm.ReceiveReplyTag, m.receiveReplyHandler)
+	m.mh.RegisterCallback(wDm.ReceiveReactionTag, m.receiveReactionHandler)
+	m.mh.RegisterCallback(wDm.UpdateSentStatusTag, m.updateSentStatusHandler)
 }
 
 // newWASMEventModelHandler is the handler for NewWASMEventModel. Returns an
 // empty slice on success or an error message on failure.
 func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
-	var msg mChannels.NewWASMEventModelMessage
+	var msg wChannels.NewWASMEventModelMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return []byte{}, errors.Errorf(
@@ -78,7 +78,7 @@ func (m *manager) newWASMEventModelHandler(data []byte) ([]byte, error) {
 func (m *manager) messageReceivedCallback(
 	uuid uint64, pubKey ed25519.PublicKey, update bool) {
 	// Package parameters for sending
-	msg := &mDm.MessageReceivedCallbackMessage{
+	msg := &wDm.MessageReceivedCallbackMessage{
 		UUID:   uuid,
 		PubKey: pubKey,
 		Update: update,
@@ -91,7 +91,7 @@ func (m *manager) messageReceivedCallback(
 	}
 
 	// Send it to the main thread
-	m.mh.SendMessage(mDm.MessageReceivedCallbackTag, data)
+	m.mh.SendMessage(wDm.MessageReceivedCallbackTag, data)
 }
 
 // storeDatabaseName sends the database name to the main thread and waits for
@@ -101,14 +101,14 @@ func (m *manager) messageReceivedCallback(
 func (m *manager) storeDatabaseName(databaseName string) error {
 	// Register response handler with channel that will wait for the response
 	responseChan := make(chan []byte)
-	m.mh.RegisterCallback(mDm.StoreDatabaseNameTag,
+	m.mh.RegisterCallback(wDm.StoreDatabaseNameTag,
 		func(data []byte) ([]byte, error) {
 			responseChan <- data
 			return nil, nil
 		})
 
 	// Send encryption status to main thread
-	m.mh.SendMessage(mDm.StoreDatabaseNameTag, []byte(databaseName))
+	m.mh.SendMessage(wDm.StoreDatabaseNameTag, []byte(databaseName))
 
 	// Wait for response
 	select {
@@ -134,7 +134,7 @@ func (m *manager) storeDatabaseName(databaseName string) error {
 func (m *manager) storeEncryptionStatus(
 	databaseName string, encryption bool) (bool, error) {
 	// Package parameters for sending
-	msg := &mChannels.EncryptionStatusMessage{
+	msg := &wChannels.EncryptionStatusMessage{
 		DatabaseName:     databaseName,
 		EncryptionStatus: encryption,
 	}
@@ -145,17 +145,17 @@ func (m *manager) storeEncryptionStatus(
 
 	// Register response handler with channel that will wait for the response
 	responseChan := make(chan []byte)
-	m.mh.RegisterCallback(mDm.EncryptionStatusTag,
+	m.mh.RegisterCallback(wDm.EncryptionStatusTag,
 		func(data []byte) ([]byte, error) {
 			responseChan <- data
 			return nil, nil
 		})
 
 	// Send encryption status to main thread
-	m.mh.SendMessage(mDm.EncryptionStatusTag, data)
+	m.mh.SendMessage(wDm.EncryptionStatusTag, data)
 
 	// Wait for response
-	var response mChannels.EncryptionStatusReply
+	var response wChannels.EncryptionStatusReply
 	select {
 	case responseData := <-responseChan:
 		if err = json.Unmarshal(responseData, &response); err != nil {
@@ -179,7 +179,7 @@ func (m *manager) storeEncryptionStatus(
 // receiveHandler is the handler for wasmModel.Receive. Returns a UUID of 0 on
 // error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveHandler(data []byte) ([]byte, error) {
-	var msg mDm.TransferMessage
+	var msg wDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return zeroUUID, errors.Errorf(
@@ -200,7 +200,7 @@ func (m *manager) receiveHandler(data []byte) ([]byte, error) {
 // receiveTextHandler is the handler for wasmModel.ReceiveText. Returns a UUID
 // of 0 on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveTextHandler(data []byte) ([]byte, error) {
-	var msg mDm.TransferMessage
+	var msg wDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return []byte{}, errors.Errorf(
@@ -222,7 +222,7 @@ func (m *manager) receiveTextHandler(data []byte) ([]byte, error) {
 // receiveReplyHandler is the handler for wasmModel.ReceiveReply. Returns a UUID
 // of 0 on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
-	var msg mDm.TransferMessage
+	var msg wDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return zeroUUID, errors.Errorf(
@@ -244,7 +244,7 @@ func (m *manager) receiveReplyHandler(data []byte) ([]byte, error) {
 // receiveReactionHandler is the handler for wasmModel.ReceiveReaction. Returns
 // a UUID of 0 on error or the JSON marshalled UUID (uint64) on success.
 func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
-	var msg mDm.TransferMessage
+	var msg wDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return zeroUUID, errors.Errorf(
@@ -266,7 +266,7 @@ func (m *manager) receiveReactionHandler(data []byte) ([]byte, error) {
 // updateSentStatusHandler is the handler for wasmModel.UpdateSentStatus. Always
 // returns nil; meaning, no response is supplied (or expected).
 func (m *manager) updateSentStatusHandler(data []byte) ([]byte, error) {
-	var msg mDm.TransferMessage
+	var msg wDm.TransferMessage
 	err := json.Unmarshal(data, &msg)
 	if err != nil {
 		return nil, errors.Errorf(
diff --git a/indexedDb/dm/implementation.go b/indexedDb/impl/dm/implementation.go
similarity index 94%
rename from indexedDb/dm/implementation.go
rename to indexedDb/impl/dm/implementation.go
index bde56cede34f3cf97f108d26d7c7f14e027c498d..293754b06f0035b7b63feca8f2a40ec405f38557 100644
--- a/indexedDb/dm/implementation.go
+++ b/indexedDb/impl/dm/implementation.go
@@ -12,6 +12,7 @@ package main
 import (
 	"crypto/ed25519"
 	"encoding/json"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb/impl"
 	"strings"
 	"sync"
 	"syscall/js"
@@ -21,7 +22,6 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/v4/cmix/rounds"
 	"gitlab.com/elixxir/client/v4/dm"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 	"gitlab.com/elixxir/xxdk-wasm/utils"
 	"gitlab.com/xx_network/primitives/id"
 
@@ -65,7 +65,7 @@ func (w *wasmModel) joinConversation(nickname string,
 			"Unable to marshal Conversation: %+v", err)
 	}
 
-	_, err = indexedDb.Put(w.db, conversationStoreName, convoObj)
+	_, err = impl.Put(w.db, conversationStoreName, convoObj)
 	if err != nil {
 		return errors.WithMessagef(parentErr,
 			"Unable to put Conversation: %+v", err)
@@ -100,10 +100,10 @@ func (w *wasmModel) Receive(messageID message.ID, nickname string, text []byte,
 	parentErr := errors.New("failed to Receive")
 
 	// If there is no extant Conversation, create one.
-	_, err := indexedDb.Get(
+	_, err := impl.Get(
 		w.db, conversationStoreName, utils.CopyBytesToJS(pubKey))
 	if err != nil {
-		if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) {
+		if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
 			err = w.joinConversation(nickname, pubKey, dmToken, codeset)
 			if err != nil {
 				jww.ERROR.Printf("%+v", err)
@@ -143,10 +143,10 @@ func (w *wasmModel) ReceiveText(messageID message.ID, nickname, text string,
 	parentErr := errors.New("failed to ReceiveText")
 
 	// If there is no extant Conversation, create one.
-	_, err := indexedDb.Get(
+	_, err := impl.Get(
 		w.db, conversationStoreName, utils.CopyBytesToJS(pubKey))
 	if err != nil {
-		if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) {
+		if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
 			err = w.joinConversation(nickname, pubKey, dmToken, codeset)
 			if err != nil {
 				jww.ERROR.Printf("%+v", err)
@@ -188,10 +188,10 @@ func (w *wasmModel) ReceiveReply(messageID, reactionTo message.ID, nickname,
 	parentErr := errors.New("failed to ReceiveReply")
 
 	// If there is no extant Conversation, create one.
-	_, err := indexedDb.Get(
+	_, err := impl.Get(
 		w.db, conversationStoreName, utils.CopyBytesToJS(pubKey))
 	if err != nil {
-		if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) {
+		if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
 			err = w.joinConversation(nickname, pubKey, dmToken, codeset)
 			if err != nil {
 				jww.ERROR.Printf("%+v", err)
@@ -233,10 +233,10 @@ func (w *wasmModel) ReceiveReaction(messageID, _ message.ID, nickname,
 	parentErr := errors.New("failed to ReceiveText")
 
 	// If there is no extant Conversation, create one.
-	_, err := indexedDb.Get(
+	_, err := impl.Get(
 		w.db, conversationStoreName, utils.CopyBytesToJS(pubKey))
 	if err != nil {
-		if strings.Contains(err.Error(), indexedDb.ErrDoesNotExist) {
+		if strings.Contains(err.Error(), impl.ErrDoesNotExist) {
 			err = w.joinConversation(nickname, pubKey, dmToken, codeset)
 			if err != nil {
 				jww.ERROR.Printf("%+v", err)
@@ -286,7 +286,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID message.ID,
 	key := js.ValueOf(uuid)
 
 	// Use the key to get the existing Message
-	currentMsg, err := indexedDb.Get(w.db, messageStoreName, key)
+	currentMsg, err := impl.Get(w.db, messageStoreName, key)
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.WithMessagef(parentErr,
 			"Unable to get message: %+v", err))
@@ -343,7 +343,7 @@ func (w *wasmModel) receiveHelper(
 	}
 
 	// Store message to database
-	result, err := indexedDb.Put(w.db, messageStoreName, messageObj)
+	result, err := impl.Put(w.db, messageStoreName, messageObj)
 	if err != nil {
 		return 0, errors.Errorf("Unable to put Message: %+v", err)
 	}
@@ -367,7 +367,7 @@ func (w *wasmModel) receiveHelper(
 
 // msgIDLookup gets the UUID of the Message with the given messageID.
 func (w *wasmModel) msgIDLookup(messageID message.ID) (uint64, error) {
-	resultObj, err := indexedDb.GetIndex(w.db, messageStoreName,
+	resultObj, err := impl.GetIndex(w.db, messageStoreName,
 		messageStoreMessageIndex, utils.CopyBytesToJS(messageID.Marshal()))
 	if err != nil {
 		return 0, err
diff --git a/indexedDb/dm/init.go b/indexedDb/impl/dm/init.go
similarity index 98%
rename from indexedDb/dm/init.go
rename to indexedDb/impl/dm/init.go
index aaee49ff4f63411dfec3b3187bb244b6fcd4b4f2..ec952044166a19f31fd13cec48f270a801bd8013 100644
--- a/indexedDb/dm/init.go
+++ b/indexedDb/impl/dm/init.go
@@ -11,6 +11,7 @@ package main
 
 import (
 	"crypto/ed25519"
+	"gitlab.com/elixxir/xxdk-wasm/indexedDb/impl"
 	"syscall/js"
 
 	"github.com/hack-pad/go-indexeddb/idb"
@@ -18,7 +19,6 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/v4/dm"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
-	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
 )
 
 const (
@@ -61,7 +61,7 @@ func newWASMModel(databaseName string, encryption cryptoChannel.Cipher,
 	cb MessageReceivedCallback, storeDatabaseName storeDatabaseNameFn,
 	storeEncryptionStatus storeEncryptionStatusFn) (*wasmModel, error) {
 	// Attempt to open database object
-	ctx, cancel := indexedDb.NewContext()
+	ctx, cancel := impl.NewContext()
 	defer cancel()
 	openRequest, err := idb.Global().Open(ctx, databaseName, currentVersion,
 		func(db *idb.Database, oldVersion, newVersion uint) error {
diff --git a/indexedDb/dm/main.go b/indexedDb/impl/dm/main.go
similarity index 100%
rename from indexedDb/dm/main.go
rename to indexedDb/impl/dm/main.go
diff --git a/indexedDb/dm/model.go b/indexedDb/impl/dm/model.go
similarity index 100%
rename from indexedDb/dm/model.go
rename to indexedDb/impl/dm/model.go
diff --git a/indexedDb/utils.go b/indexedDb/impl/utils.go
similarity index 99%
rename from indexedDb/utils.go
rename to indexedDb/impl/utils.go
index 664a1cc663ddef38016359067b8dd2e527da24aa..b68746ebd6eb101d8f077b6179f1f6d41bfb04a6 100644
--- a/indexedDb/utils.go
+++ b/indexedDb/impl/utils.go
@@ -10,7 +10,7 @@
 // This file contains several generic IndexedDB helper functions that
 // may be useful for any IndexedDB implementations.
 
-package indexedDb
+package impl
 
 import (
 	"context"
diff --git a/indexedDb/utils_test.go b/indexedDb/impl/utils_test.go
similarity index 99%
rename from indexedDb/utils_test.go
rename to indexedDb/impl/utils_test.go
index 1c657ebd5dbb4607c977323dc8883042989f05f9..6b6da6ff36ee8be5412146443093ee7d85c07c4f 100644
--- a/indexedDb/utils_test.go
+++ b/indexedDb/impl/utils_test.go
@@ -7,7 +7,7 @@
 
 //go:build js && wasm
 
-package indexedDb
+package impl
 
 import (
 	"github.com/hack-pad/go-indexeddb/idb"
diff --git a/indexedDbWorker/channels/implementation.go b/indexedDb/worker/channels/implementation.go
similarity index 100%
rename from indexedDbWorker/channels/implementation.go
rename to indexedDb/worker/channels/implementation.go
diff --git a/indexedDbWorker/channels/init.go b/indexedDb/worker/channels/init.go
similarity index 100%
rename from indexedDbWorker/channels/init.go
rename to indexedDb/worker/channels/init.go
diff --git a/indexedDbWorker/channels/tags.go b/indexedDb/worker/channels/tags.go
similarity index 98%
rename from indexedDbWorker/channels/tags.go
rename to indexedDb/worker/channels/tags.go
index 5e3886a04b981aacfcde9007d2ab1ca98404d80d..3b963922bc5c2f49fab26651af57fef995cf11ea 100644
--- a/indexedDbWorker/channels/tags.go
+++ b/indexedDb/worker/channels/tags.go
@@ -5,6 +5,8 @@
 // LICENSE file.                                                              //
 ////////////////////////////////////////////////////////////////////////////////
 
+//go:build js && wasm
+
 package channels
 
 import "gitlab.com/elixxir/xxdk-wasm/worker"
@@ -12,7 +14,6 @@ import "gitlab.com/elixxir/xxdk-wasm/worker"
 // List of tags that can be used when sending a message or registering a handler
 // to receive a message.
 const (
-
 	NewWASMEventModelTag       worker.Tag = "NewWASMEventModel"
 	MessageReceivedCallbackTag worker.Tag = "MessageReceivedCallback"
 	EncryptionStatusTag        worker.Tag = "EncryptionStatus"
@@ -27,4 +28,4 @@ const (
 	UpdateFromMessageIDTag worker.Tag = "UpdateFromMessageID"
 	GetMessageTag          worker.Tag = "GetMessage"
 	DeleteMessageTag       worker.Tag = "DeleteMessage"
-)
\ No newline at end of file
+)
diff --git a/indexedDbWorker/dm/implementation.go b/indexedDb/worker/dm/implementation.go
similarity index 100%
rename from indexedDbWorker/dm/implementation.go
rename to indexedDb/worker/dm/implementation.go
diff --git a/indexedDbWorker/dm/init.go b/indexedDb/worker/dm/init.go
similarity index 100%
rename from indexedDbWorker/dm/init.go
rename to indexedDb/worker/dm/init.go
diff --git a/indexedDbWorker/dm/tags.go b/indexedDb/worker/dm/tags.go
similarity index 98%
rename from indexedDbWorker/dm/tags.go
rename to indexedDb/worker/dm/tags.go
index ae38027722769672ff4055bf76665f954f199105..afe29a33f3acc01470a35f84be495f2878bb194f 100644
--- a/indexedDbWorker/dm/tags.go
+++ b/indexedDb/worker/dm/tags.go
@@ -5,6 +5,8 @@
 // LICENSE file.                                                              //
 ////////////////////////////////////////////////////////////////////////////////
 
+//go:build js && wasm
+
 package channelEventModel
 
 import "gitlab.com/elixxir/xxdk-wasm/worker"
diff --git a/wasm/channels.go b/wasm/channels.go
index 5fa1edced65da86700f88414a6b4d04e0c91aa7b..de8d1fc824cdc92fc9a534c0d16d3ba369e41723 100644
--- a/wasm/channels.go
+++ b/wasm/channels.go
@@ -14,7 +14,7 @@ import (
 	"encoding/json"
 	"errors"
 	"gitlab.com/elixxir/client/v4/channels"
-	channelsDb "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/channels"
+	channelsDb "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/channels"
 	"gitlab.com/xx_network/primitives/id"
 	"sync"
 	"syscall/js"
diff --git a/wasm/dm.go b/wasm/dm.go
index 613835eb6490fc77e1189bc213c57b39c71f9c88..54c0e0fb3098ddc65599f9dd263db1fdfc7ae427 100644
--- a/wasm/dm.go
+++ b/wasm/dm.go
@@ -13,7 +13,7 @@ import (
 	"crypto/ed25519"
 	"syscall/js"
 
-	indexDB "gitlab.com/elixxir/xxdk-wasm/indexedDbWorker/dm"
+	indexDB "gitlab.com/elixxir/xxdk-wasm/indexedDb/worker/dm"
 
 	"encoding/base64"
 
diff --git a/worker/message.go b/worker/message.go
index aaf819f66c043565aa90f3c214792bae28beebff..133cb9b5fabe32f29bbda09bc6301b714c627224 100644
--- a/worker/message.go
+++ b/worker/message.go
@@ -5,6 +5,8 @@
 // LICENSE file.                                                              //
 ////////////////////////////////////////////////////////////////////////////////
 
+//go:build js && wasm
+
 package worker
 
 // message is the outer message that contains the contents of each message sent