diff --git a/res/xml/network_security_configuration.xml b/res/xml/network_security_configuration.xml
index f74d8df9fc..79ba86792a 100644
--- a/res/xml/network_security_configuration.xml
+++ b/res/xml/network_security_configuration.xml
@@ -4,6 +4,7 @@
         <domain includeSubdomains="true">imaginary.stream</domain>
         <domain includeSubdomains="true">storage.seed1.loki.network</domain>
         <domain includeSubdomains="true">storage.seed2.loki.network</domain>
+        <domain includeSubdomains="true">public.loki.foundation:22023</domain>
         <domain includeSubdomains="true">127.0.0.1</domain>
     </domain-config>
 </network-security-config>
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/groups/GroupManager.java b/src/org/thoughtcrime/securesms/groups/GroupManager.java
index 80034d3d80..bcd4521bb8 100644
--- a/src/org/thoughtcrime/securesms/groups/GroupManager.java
+++ b/src/org/thoughtcrime/securesms/groups/GroupManager.java
@@ -78,7 +78,10 @@ public class GroupManager {
     final Set<Address>  memberAddresses = getMemberAddresses(members);
     final Set<Address>  adminAddresses  = getMemberAddresses(admins);
 
-    memberAddresses.add(Address.fromSerialized(TextSecurePreferences.getLocalNumber(context)));
+    String masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(context);
+    String ourNumber = masterHexEncodedPublicKey != null ? masterHexEncodedPublicKey : TextSecurePreferences.getLocalNumber(context);
+
+    memberAddresses.add(Address.fromSerialized(ourNumber));
     groupDatabase.create(groupId, name, new LinkedList<>(memberAddresses), null, null, new LinkedList<>(adminAddresses));
 
     if (!mms) {
diff --git a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
index 9ba4a0b043..9f216e2fad 100644
--- a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
+++ b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
@@ -70,7 +70,6 @@ public class GroupMessageProcessor {
     String                id       = GroupUtil.getEncodedId(group);
     Optional<GroupRecord> record   = database.getGroup(id);
 
-    // TODO: Allow processing messages from secondary devices
     if (record.isPresent() && group.getType() == Type.UPDATE) {
       return handleGroupUpdate(context, content, group, record.get(), outgoing);
     } else if (!record.isPresent() && group.getType() == Type.UPDATE) {
diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
index cb15f2c4a5..2f543a86bc 100644
--- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
+++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
@@ -858,6 +858,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
       sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
     }
 
+    // Ignore messages from ourselves
+    if (sender.serialize().equalsIgnoreCase(TextSecurePreferences.getLocalNumber(context))) { return; }
+
     IncomingMediaMessage        mediaMessage   = new IncomingMediaMessage(sender, message.getTimestamp(), -1,
        message.getExpiresInSeconds() * 1000L, false, content.isNeedsReceipt(), message.getBody(), message.getGroupInfo(), message.getAttachments(),
         quote, sharedContacts, linkPreviews, sticker);
@@ -1048,6 +1051,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
         sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
       }
 
+      // Ignore messages from ourselves
+      if (sender.serialize().equalsIgnoreCase(TextSecurePreferences.getLocalNumber(context))) { return; }
+
       IncomingTextMessage _textMessage = new IncomingTextMessage(sender,
                                                                 content.getSenderDevice(),
                                                                 message.getTimestamp(), body,
diff --git a/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt b/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
index dbf5988a6f..034176745a 100644
--- a/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
@@ -101,7 +101,8 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), MemberC
         val recipients = selectedMembers.map {
             Recipient.from(this, Address.fromSerialized(it), false)
         }.toSet()
-        val local = Recipient.from(this, Address.fromSerialized(TextSecurePreferences.getLocalNumber(this)), false)
+        val ourNumber = TextSecurePreferences.getMasterHexEncodedPublicKey(this) ?: TextSecurePreferences.getLocalNumber(this)
+        val local = Recipient.from(this, Address.fromSerialized(ourNumber), false)
         CreateClosedGroupTask(WeakReference(this), null, name.toString(), recipients, setOf(local)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
     }