diff --git a/cmd/root.go b/cmd/root.go
index eef8d776d18f773bf9e97b78c38aabe99437edd6..1405882e7c45f04d41fa79ad2503f03c97f3792d 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -86,8 +86,8 @@ var rootCmd = &cobra.Command{
 
 		// Set up reception handler
 		swboard := client.GetSwitchboard()
-		recvCh := make(chan message.Receive, 10)
-		listenerID := swboard.RegisterChannel("raw",
+		recvCh := make(chan message.Receive, 10000)
+		listenerID := swboard.RegisterChannel("DefaultCLIReceiver",
 			switchboard.AnyUser(), message.Text, recvCh)
 		jww.INFO.Printf("Message ListenerID: %v", listenerID)
 
@@ -257,7 +257,7 @@ func printChanRequest(requestor contact.Contact, message string) {
 		requestor.ID)
 	jww.INFO.Printf(msg)
 	fmt.Printf(msg)
-	msg = fmt.Sprintf("Authentication channel request message: %s", message)
+	msg = fmt.Sprintf("Authentication channel request message: %s\n", message)
 	jww.INFO.Printf(msg)
 	fmt.Printf(msg)
 }
@@ -298,7 +298,7 @@ func addAuthenticatedChannel(client *api.Client, recipientID *id.ID,
 		recipientContact = recipient
 	}
 
-	msg := fmt.Sprintf("Adding authenticated channel for: %s",
+	msg := fmt.Sprintf("Adding authenticated channel for: %s\n",
 		recipientID)
 	jww.INFO.Printf(msg)
 	fmt.Printf(msg)
diff --git a/go.mod b/go.mod
index 3ea0fa1712c239c1cc08581025adb4afd9f2859f..7d98b995c2d1334892a3f3ea835343758b31b703 100644
--- a/go.mod
+++ b/go.mod
@@ -18,14 +18,13 @@ require (
 	github.com/spf13/pflag v1.0.5 // indirect
 	github.com/spf13/viper v1.7.1
 	gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228
-	gitlab.com/elixxir/comms v0.0.4-0.20201124200043-8031463a4843
-	gitlab.com/elixxir/crypto v0.0.5-0.20201124195819-54be458a0dac
+	gitlab.com/elixxir/comms v0.0.4-0.20201125010058-1bd873622e92
+	gitlab.com/elixxir/crypto v0.0.5-0.20201125005724-bcc603df02d3
 	gitlab.com/elixxir/ekv v0.1.3
 	gitlab.com/elixxir/primitives v0.0.3-0.20201116174806-97f190989704
 	gitlab.com/xx_network/comms v0.0.4-0.20201119231004-a67d08045535
 	gitlab.com/xx_network/crypto v0.0.5-0.20201124194022-366c10b1bce0
 	gitlab.com/xx_network/primitives v0.0.3-0.20201116234927-44e42fc91e7c
-	gitlab.com/xx_network/ring v0.0.3-0.20201120004140-b0e268db06d1 // indirect
 	golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897
 	google.golang.org/protobuf v1.25.0
 	gopkg.in/ini.v1 v1.61.0 // indirect
diff --git a/go.sum b/go.sum
index f0cf37ef1223c2adeb4e55a26524b6cdd75b1f4a..66f26427e976ac8e1a64f5481c3c150bb76532b3 100644
--- a/go.sum
+++ b/go.sum
@@ -252,20 +252,28 @@ github.com/zeebo/pcg v1.0.0 h1:dt+dx+HvX8g7Un32rY9XWoYnd0NmKmrIzpHF7qiTDj0=
 github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228 h1:Gi6rj4mAlK0BJIk1HIzBVMjWNjIUfstrsXC2VqLYPcA=
 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228/go.mod h1:H6jztdm0k+wEV2QGK/KYA+MY9nj9Zzatux/qIvDDv3k=
-gitlab.com/elixxir/comms v0.0.4-0.20201120005227-ec9177071abb h1:nqceIUadPdJGLQZHGHOEA4lbb4qADYLm/f0nfeQPZ/o=
-gitlab.com/elixxir/comms v0.0.4-0.20201120005227-ec9177071abb/go.mod h1:Xdo7hhfg+wGShftpN4S/2tgO+6A8K+5OijlVO+wrl7s=
+gitlab.com/elixxir/comms v0.0.3 h1:7cFvBZddX/8JSY5MvfPpg21niV88IpeqQkoKs15erZM=
+gitlab.com/elixxir/comms v0.0.3/go.mod h1:5p7oz4yFrK037rPap6ooaWrloJrzuVZ4jnzOdvgyqnU=
 gitlab.com/elixxir/comms v0.0.4-0.20201124200043-8031463a4843 h1:KYcfQnnmc1oBAodVi3gMCXNWS6zoSCeyLhrrRzQP40Y=
 gitlab.com/elixxir/comms v0.0.4-0.20201124200043-8031463a4843/go.mod h1:dRTzI+YApY9QZ2+eP9+0n5+KzxziZY24SyW31O4QWgM=
+gitlab.com/elixxir/comms v0.0.4-0.20201125010058-1bd873622e92 h1:YAcb6IV0WfF2Y4jP2NRKUff9lMZmw7y07C5Ml0VIIjE=
+gitlab.com/elixxir/comms v0.0.4-0.20201125010058-1bd873622e92/go.mod h1:MeyRkpCZZrMqI/uE4wfcJKZxemQfT0rqnfmYuz6HuBM=
 gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4 h1:28ftZDeYEko7xptCZzeFWS1Iam95dj46TWFVVlKmw6A=
 gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4/go.mod h1:ucm9SFKJo+K0N2GwRRpaNr+tKXMIOVWzmyUD0SbOu2c=
 gitlab.com/elixxir/crypto v0.0.3 h1:znCt/x2bL4y8czTPaaFkwzdgSgW3BJc/1+dxyf1jqVw=
 gitlab.com/elixxir/crypto v0.0.3/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
-gitlab.com/elixxir/crypto v0.0.5-0.20201110193609-6b5e881867b4 h1:1a1zZDuqZ56qU1EPgpc+Sqny1YFl0kAKJgQbsVc0WJQ=
-gitlab.com/elixxir/crypto v0.0.5-0.20201110193609-6b5e881867b4/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
-gitlab.com/elixxir/crypto v0.0.5-0.20201118204646-9b23991834c6 h1:HEJHC6gyVMdCZ1PSJkFDScHnsrWAMF+PFxyL2zpNrgU=
-gitlab.com/elixxir/crypto v0.0.5-0.20201118204646-9b23991834c6/go.mod h1:BqvmtLM4eW+3NNOVK7U3COnnxqhJZxdCv4yziCuYhlA=
+gitlab.com/elixxir/crypto v0.0.4 h1:8eWjvUepCU2PiqZM2NFYo6rFg1w8KWO1hMDwMNFEqoI=
+gitlab.com/elixxir/crypto v0.0.4/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
+gitlab.com/elixxir/crypto v0.0.5-0.20201109234712-7e64de16970d h1:9Peb/peftTVeO5gYqi37sZycMEiu05+2VZ/j8d5lldI=
+gitlab.com/elixxir/crypto v0.0.5-0.20201109234712-7e64de16970d/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
 gitlab.com/elixxir/crypto v0.0.5-0.20201124195819-54be458a0dac h1:JXtuads5nAgrSku7klahF8n+CF+dmupmm0DHsL0CCEM=
 gitlab.com/elixxir/crypto v0.0.5-0.20201124195819-54be458a0dac/go.mod h1:V8lricBRpa8v1ySymXQ1/lsb+8/lSak5S7ZWRT6OACY=
+gitlab.com/elixxir/crypto v0.0.5-0.20201125005532-52b3e59dddbd h1:+AmHcjwo6M5f2cbFfbJrJw822bG6Bcw6+Hl/+D2HXhg=
+gitlab.com/elixxir/crypto v0.0.5-0.20201125005532-52b3e59dddbd/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
+gitlab.com/elixxir/crypto v0.0.5-0.20201125005724-bcc603df02d3 h1:TXorNuWA1udEpIlVBG2Wpd91KKYQY9Q5wXiHpgpitgM=
+gitlab.com/elixxir/crypto v0.0.5-0.20201125005724-bcc603df02d3/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA=
+gitlab.com/elixxir/crypto v0.0.6 h1:c94CGzBTV7LgInGHfmeJHrqq9nIc/WEOLUd9OeQBN74=
+gitlab.com/elixxir/crypto v0.0.6/go.mod h1:V8lricBRpa8v1ySymXQ1/lsb+8/lSak5S7ZWRT6OACY=
 gitlab.com/elixxir/ekv v0.1.3 h1:OE+LBMIhjGUMwc6hHJzYvEPNJQV7t1vMnJyIgxUMUo8=
 gitlab.com/elixxir/ekv v0.1.3/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4=
 gitlab.com/elixxir/primitives v0.0.0-20200731184040-494269b53b4d/go.mod h1:OQgUZq7SjnE0b+8+iIAT2eqQF+2IFHn73tOo+aV11mg=
@@ -273,10 +281,13 @@ gitlab.com/elixxir/primitives v0.0.0-20200804170709-a1896d262cd9/go.mod h1:p0Vel
 gitlab.com/elixxir/primitives v0.0.0-20200804182913-788f47bded40/go.mod h1:tzdFFvb1ESmuTCOl1z6+yf6oAICDxH2NPUemVgoNLxc=
 gitlab.com/elixxir/primitives v0.0.1 h1:q61anawANlNAExfkeQEE1NCsNih6vNV1FFLoUQX6txQ=
 gitlab.com/elixxir/primitives v0.0.1/go.mod h1:kNp47yPqja2lHSiS4DddTvFpB/4D9dB2YKnw5c+LJCE=
+gitlab.com/elixxir/primitives v0.0.2 h1:PvyOOp/A6tCtmU7YnGhCCPRdmEogEzCi0Li/WfiVjGo=
+gitlab.com/elixxir/primitives v0.0.2/go.mod h1:3fxFHSlQhkV4vs+S0dZEz3Om3m+40WX8L806yvSnNFc=
 gitlab.com/elixxir/primitives v0.0.3-0.20201116174806-97f190989704 h1:JkFREumz8skDqkCjjzZnlf5tg+PBiMB9kfVn9z0VEfE=
 gitlab.com/elixxir/primitives v0.0.3-0.20201116174806-97f190989704/go.mod h1:3fxFHSlQhkV4vs+S0dZEz3Om3m+40WX8L806yvSnNFc=
 gitlab.com/xx_network/comms v0.0.0-20200805174823-841427dd5023/go.mod h1:owEcxTRl7gsoM8c3RQ5KAm5GstxrJp5tn+6JfQ4z5Hw=
-gitlab.com/xx_network/comms v0.0.4-0.20201110022115-4a6171cad07d/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
+gitlab.com/xx_network/comms v0.0.3 h1:ch1eJI4WXUE/Kz0Kp9uDWX16B+hfVFmdHY+EOai4Wzc=
+gitlab.com/xx_network/comms v0.0.3/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
 gitlab.com/xx_network/comms v0.0.4-0.20201119231004-a67d08045535 h1:3KoNUndePTAUMlX1xc+zk0wuOZMb/xJMUVuhS+HisdA=
 gitlab.com/xx_network/comms v0.0.4-0.20201119231004-a67d08045535/go.mod h1:YViGbRj7FjJYoaO4NpALGEd9dK/l8uUT000FEBbUTL8=
 gitlab.com/xx_network/crypto v0.0.3/go.mod h1:DF2HYvvCw9wkBybXcXAgQMzX+MiGbFPjwt3t17VRqRE=
@@ -291,9 +302,8 @@ gitlab.com/xx_network/primitives v0.0.2 h1:r45yKenJ9e7PylI1ZXJ1Es09oYNaYXjxVy9+u
 gitlab.com/xx_network/primitives v0.0.2/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc=
 gitlab.com/xx_network/primitives v0.0.3-0.20201116234927-44e42fc91e7c h1:mYId667WIN97E6KhPw4HDYyCjWzsG7gCM/HLTNTCXZQ=
 gitlab.com/xx_network/primitives v0.0.3-0.20201116234927-44e42fc91e7c/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc=
+gitlab.com/xx_network/ring v0.0.2 h1:TlPjlbFdhtJrwvRgIg4ScdngMTaynx/ByHBRZiXCoL0=
 gitlab.com/xx_network/ring v0.0.2/go.mod h1:aLzpP2TiZTQut/PVHR40EJAomzugDdHXetbieRClXIM=
-gitlab.com/xx_network/ring v0.0.3-0.20201120004140-b0e268db06d1 h1:yqXC/naXN6Hw1fmfI6qOOMmBbmZGsYXsESVSwf6IEdM=
-gitlab.com/xx_network/ring v0.0.3-0.20201120004140-b0e268db06d1/go.mod h1:aLzpP2TiZTQut/PVHR40EJAomzugDdHXetbieRClXIM=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
 go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
diff --git a/network/follow.go b/network/follow.go
index a52eff6923bb4d03ef09034608cdacbe783da807..e0bbe4d43493b748a53502eb9181d040c4b09620 100644
--- a/network/follow.go
+++ b/network/follow.go
@@ -101,13 +101,18 @@ func (m *manager) follow(rng csprng.Source, comms followNetworkComms) {
 	}
 	var filterList []*bloom.Ring
 	for _, f := range pollResp.BloomFilters {
-		jww.INFO.Printf("Bloom Filter received: %v", f)
-		filter, err := bloom.InitByParameters(bloomFilterSize, bloomFilterHashes)
+		jww.DEBUG.Printf("Bloom Filter size: %d, hashes: %d",
+			bloomFilterSize, bloomFilterHashes)
+		filter, err := bloom.InitByParameters(bloomFilterSize,
+			bloomFilterHashes)
 		if err != nil {
-			jww.FATAL.Panicf("Unable to create a bloom filter: %v", err)
+			jww.INFO.Printf("Bloom Filter Data: %v", f)
+			jww.FATAL.Panicf("Unable to create a bloom filter: %+v",
+				err)
 		}
 		if err := filter.UnmarshalBinary(f); err != nil {
 			jww.WARN.Printf("Failed to unmarshal filter: %+v", err)
+			jww.INFO.Printf("Bloom Filter Unmarshal Data: %v", f)
 			continue
 		}
 		filterList = append(filterList, filter)
diff --git a/network/message/handler.go b/network/message/handler.go
index 9018e36f847d1fb5364f12d51e45f0a7c1e06353..8ee9972593bb72884092e5ca93828acb91ad4cb1 100644
--- a/network/message/handler.go
+++ b/network/message/handler.go
@@ -92,4 +92,4 @@ func (m *Manager) handleMessage(ecrMsg format.Message) {
 			m.Switchboard.Speak(xxMsg)
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/network/rounds/retrieve.go b/network/rounds/retrieve.go
index e763e73f98f6b62179a918ef74dd0e4c50eee3bc..5c35408673a0a4abd21f71820d488a5c08d4685f 100644
--- a/network/rounds/retrieve.go
+++ b/network/rounds/retrieve.go
@@ -86,6 +86,9 @@ func (m *Manager) getMessagesFromGateway(roundInfo *pb.RoundInfo,
 		return message.Bundle{}, nil
 	}
 
+	jww.INFO.Printf("Received %d messages in Round %v via Gateway: %s",
+		len(msgs), rid, gwHost.GetId())
+
 	//build the bundle of messages to send to the message processor
 	bundle := message.Bundle{
 		Round:    rid,
diff --git a/storage/auth/store.go b/storage/auth/store.go
index 11eac13f3471887d629f626ae0c6669166765f10..fe129a7877e9c18771e6088b9c543a8183571db7 100644
--- a/storage/auth/store.go
+++ b/storage/auth/store.go
@@ -249,7 +249,7 @@ func (s *Store) GetFingerprint(fp format.Fingerprint) (FingerprintType,
 	r, ok := s.fingerprints[fp]
 	s.mux.RUnlock()
 	if !ok {
-		return 0, nil, nil, errors.Errorf("Fingerprint cannot be found: %s", fp)
+		return 0, nil, nil, errors.Errorf("Fingerprint cannot be found: %v", fp)
 	}
 
 	switch r.Type {
@@ -266,7 +266,7 @@ func (s *Store) GetFingerprint(fp format.Fingerprint) (FingerprintType,
 		_, ok := s.requests[*r.Request.sent.partner]
 		s.mux.RUnlock()
 		if !ok {
-			return 0, nil, nil, errors.Errorf("request associated with " +
+			return 0, nil, nil, errors.Errorf("request associated with "+
 				"fingerprint cannot be found: %s", fp)
 		}
 		// Return the request
diff --git a/storage/e2e/session.go b/storage/e2e/session.go
index 7cad5b163fbf8e2046e57c109ad9abc9d77131e4..6643d1eb1b9d074820d5b60010e0fc7a4aa0c1c0 100644
--- a/storage/e2e/session.go
+++ b/storage/e2e/session.go
@@ -82,6 +82,8 @@ type SessionDisk struct {
 	PartnerPubKey []byte
 	// ID of the session which triggered this sessions creation.
 	Trigger []byte
+	// relationship fp
+	RelationshipFingerprint []byte
 
 	//denotes if the other party has confirmed this key
 	Confirmation uint8
@@ -274,6 +276,7 @@ func (s *Session) marshal() ([]byte, error) {
 	sd.MyPrivKey = s.myPrivKey.Bytes()
 	sd.PartnerPubKey = s.partnerPubKey.Bytes()
 	sd.Trigger = s.partnerSource[:]
+	sd.RelationshipFingerprint = s.relationshipFingerprint
 
 	// assume in progress confirmations and session creations have failed on
 	// reset, therefore do not store their pending progress
@@ -309,6 +312,7 @@ func (s *Session) unmarshal(b []byte) error {
 	s.partnerPubKey = grp.NewIntFromBytes(sd.PartnerPubKey)
 	s.negotiationStatus = Negotiation(sd.Confirmation)
 	s.ttl = sd.TTL
+	s.relationshipFingerprint = sd.RelationshipFingerprint
 	copy(s.partnerSource[:], sd.Trigger)
 
 	s.keyState, err = loadStateVector(s.kv, "")
diff --git a/storage/e2e/store.go b/storage/e2e/store.go
index 6b38d2e0641605ed57ee214afac52f743b1f2981..3eb69bcaf6d5f3ed0dfcdd4600bc7c61a3144006 100644
--- a/storage/e2e/store.go
+++ b/storage/e2e/store.go
@@ -310,7 +310,6 @@ func (f *fingerprints) Check(fingerprint format.Fingerprint) bool {
 func (f *fingerprints) Pop(fingerprint format.Fingerprint) (*Key, bool) {
 	f.mux.Lock()
 	defer f.mux.Unlock()
-
 	key, ok := f.toKey[fingerprint]
 
 	if !ok {
diff --git a/storage/regCode.go b/storage/regCode.go
index acc03a36051e824e40f693ab96837debe1d129fe..80c36676ede39140ec13632109d543b53e6860ca 100644
--- a/storage/regCode.go
+++ b/storage/regCode.go
@@ -12,13 +12,14 @@ const regCodeVersion = 0
 
 // SetNDF stores a network definition json file
 func (s *Session) SetRegCode(regCode string) {
-	err := s.Set(regCodeKey,
+	if err := s.Set(regCodeKey,
 		&versioned.Object{
 			Version:   regCodeVersion,
 			Data:      []byte(regCode),
 			Timestamp: time.Now(),
-		})
-	jww.FATAL.Printf("Failed to set the registration code: %s", err)
+		}); err!=nil{
+		jww.FATAL.Panicf("Failed to set the registration code: %s", err)
+	}
 }
 
 // Returns the stored network definition json file
diff --git a/ud/udMessages.pb.go b/ud/udMessages.pb.go
index c556a703c57632b1690198e8597da8b8df0b13d0..33035584df24e07f83b22349442cce568d176f80 100644
--- a/ud/udMessages.pb.go
+++ b/ud/udMessages.pb.go
@@ -1,90 +1,69 @@
-////////////////////////////////////////////////////////////////////////////////
-// Copyright © 2018 Privategrity Corporation                                   /
-//                                                                             /
-// All rights reserved.                                                        /
-////////////////////////////////////////////////////////////////////////////////
-
-// Call ./generate.sh to generate the protocol buffer code
-
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.25.0
-// 	protoc        (unknown)
 // source: udMessages.proto
 
 package ud
 
 import (
+	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
+	math "math"
 )
 
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
 
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // Contains the Hash and its Type
 type HashFact struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
-	Type int32  `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
+	Hash                 []byte   `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
+	Type                 int32    `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (x *HashFact) Reset() {
-	*x = HashFact{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *HashFact) Reset()         { *m = HashFact{} }
+func (m *HashFact) String() string { return proto.CompactTextString(m) }
+func (*HashFact) ProtoMessage()    {}
+func (*HashFact) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{0}
 }
 
-func (x *HashFact) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *HashFact) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_HashFact.Unmarshal(m, b)
 }
-
-func (*HashFact) ProtoMessage() {}
-
-func (x *HashFact) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *HashFact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_HashFact.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use HashFact.ProtoReflect.Descriptor instead.
-func (*HashFact) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{0}
+func (m *HashFact) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HashFact.Merge(m, src)
+}
+func (m *HashFact) XXX_Size() int {
+	return xxx_messageInfo_HashFact.Size(m)
+}
+func (m *HashFact) XXX_DiscardUnknown() {
+	xxx_messageInfo_HashFact.DiscardUnknown(m)
 }
 
-func (x *HashFact) GetHash() []byte {
-	if x != nil {
-		return x.Hash
+var xxx_messageInfo_HashFact proto.InternalMessageInfo
+
+func (m *HashFact) GetHash() []byte {
+	if m != nil {
+		return m.Hash
 	}
 	return nil
 }
 
-func (x *HashFact) GetType() int32 {
-	if x != nil {
-		return x.Type
+func (m *HashFact) GetType() int32 {
+	if m != nil {
+		return m.Type
 	}
 	return 0
 }
@@ -92,477 +71,302 @@ func (x *HashFact) GetType() int32 {
 // Describes a user lookup result. The ID, public key, and the
 // facts inputted that brought up this user.
 type Contact struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UserID    []byte      `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
-	PubKey    []byte      `protobuf:"bytes,2,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
-	TrigFacts []*HashFact `protobuf:"bytes,3,rep,name=trigFacts,proto3" json:"trigFacts,omitempty"`
+	UserID               []byte      `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+	PubKey               []byte      `protobuf:"bytes,2,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
+	TrigFacts            []*HashFact `protobuf:"bytes,3,rep,name=trigFacts,proto3" json:"trigFacts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
 }
 
-func (x *Contact) Reset() {
-	*x = Contact{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *Contact) Reset()         { *m = Contact{} }
+func (m *Contact) String() string { return proto.CompactTextString(m) }
+func (*Contact) ProtoMessage()    {}
+func (*Contact) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{1}
 }
 
-func (x *Contact) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *Contact) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Contact.Unmarshal(m, b)
 }
-
-func (*Contact) ProtoMessage() {}
-
-func (x *Contact) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Contact.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use Contact.ProtoReflect.Descriptor instead.
-func (*Contact) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{1}
+func (m *Contact) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Contact.Merge(m, src)
+}
+func (m *Contact) XXX_Size() int {
+	return xxx_messageInfo_Contact.Size(m)
+}
+func (m *Contact) XXX_DiscardUnknown() {
+	xxx_messageInfo_Contact.DiscardUnknown(m)
 }
 
-func (x *Contact) GetUserID() []byte {
-	if x != nil {
-		return x.UserID
+var xxx_messageInfo_Contact proto.InternalMessageInfo
+
+func (m *Contact) GetUserID() []byte {
+	if m != nil {
+		return m.UserID
 	}
 	return nil
 }
 
-func (x *Contact) GetPubKey() []byte {
-	if x != nil {
-		return x.PubKey
+func (m *Contact) GetPubKey() []byte {
+	if m != nil {
+		return m.PubKey
 	}
 	return nil
 }
 
-func (x *Contact) GetTrigFacts() []*HashFact {
-	if x != nil {
-		return x.TrigFacts
+func (m *Contact) GetTrigFacts() []*HashFact {
+	if m != nil {
+		return m.TrigFacts
 	}
 	return nil
 }
 
 // Message sent to UDB to search for users
 type SearchSend struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
 	// PublicKey used in the registration
 	Fact []*HashFact `protobuf:"bytes,1,rep,name=fact,proto3" json:"fact,omitempty"`
 	// ID of the session used to create this session
-	CommID uint64 `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	CommID               uint64   `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (x *SearchSend) Reset() {
-	*x = SearchSend{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *SearchSend) Reset()         { *m = SearchSend{} }
+func (m *SearchSend) String() string { return proto.CompactTextString(m) }
+func (*SearchSend) ProtoMessage()    {}
+func (*SearchSend) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{2}
 }
 
-func (x *SearchSend) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *SearchSend) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SearchSend.Unmarshal(m, b)
 }
-
-func (*SearchSend) ProtoMessage() {}
-
-func (x *SearchSend) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *SearchSend) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SearchSend.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use SearchSend.ProtoReflect.Descriptor instead.
-func (*SearchSend) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{2}
+func (m *SearchSend) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SearchSend.Merge(m, src)
+}
+func (m *SearchSend) XXX_Size() int {
+	return xxx_messageInfo_SearchSend.Size(m)
+}
+func (m *SearchSend) XXX_DiscardUnknown() {
+	xxx_messageInfo_SearchSend.DiscardUnknown(m)
 }
 
-func (x *SearchSend) GetFact() []*HashFact {
-	if x != nil {
-		return x.Fact
+var xxx_messageInfo_SearchSend proto.InternalMessageInfo
+
+func (m *SearchSend) GetFact() []*HashFact {
+	if m != nil {
+		return m.Fact
 	}
 	return nil
 }
 
-func (x *SearchSend) GetCommID() uint64 {
-	if x != nil {
-		return x.CommID
+func (m *SearchSend) GetCommID() uint64 {
+	if m != nil {
+		return m.CommID
 	}
 	return 0
 }
 
 // Message sent from UDB to client in response to a search
 type SearchResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
 	// ID of the session created
-	Contacts []*Contact `protobuf:"bytes,1,rep,name=contacts,proto3" json:"contacts,omitempty"`
-	CommID   uint64     `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
-	Error    string     `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
+	Contacts             []*Contact `protobuf:"bytes,1,rep,name=contacts,proto3" json:"contacts,omitempty"`
+	CommID               uint64     `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	Error                string     `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
 }
 
-func (x *SearchResponse) Reset() {
-	*x = SearchResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *SearchResponse) Reset()         { *m = SearchResponse{} }
+func (m *SearchResponse) String() string { return proto.CompactTextString(m) }
+func (*SearchResponse) ProtoMessage()    {}
+func (*SearchResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{3}
 }
 
-func (x *SearchResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *SearchResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SearchResponse.Unmarshal(m, b)
 }
-
-func (*SearchResponse) ProtoMessage() {}
-
-func (x *SearchResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *SearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SearchResponse.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead.
-func (*SearchResponse) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{3}
+func (m *SearchResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SearchResponse.Merge(m, src)
+}
+func (m *SearchResponse) XXX_Size() int {
+	return xxx_messageInfo_SearchResponse.Size(m)
+}
+func (m *SearchResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_SearchResponse.DiscardUnknown(m)
 }
 
-func (x *SearchResponse) GetContacts() []*Contact {
-	if x != nil {
-		return x.Contacts
+var xxx_messageInfo_SearchResponse proto.InternalMessageInfo
+
+func (m *SearchResponse) GetContacts() []*Contact {
+	if m != nil {
+		return m.Contacts
 	}
 	return nil
 }
 
-func (x *SearchResponse) GetCommID() uint64 {
-	if x != nil {
-		return x.CommID
+func (m *SearchResponse) GetCommID() uint64 {
+	if m != nil {
+		return m.CommID
 	}
 	return 0
 }
 
-func (x *SearchResponse) GetError() string {
-	if x != nil {
-		return x.Error
+func (m *SearchResponse) GetError() string {
+	if m != nil {
+		return m.Error
 	}
 	return ""
 }
 
 // Message sent to UDB for looking up a user
 type LookupSend struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UserID []byte `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
-	CommID uint64 `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	UserID               []byte   `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+	CommID               uint64   `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (x *LookupSend) Reset() {
-	*x = LookupSend{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *LookupSend) Reset()         { *m = LookupSend{} }
+func (m *LookupSend) String() string { return proto.CompactTextString(m) }
+func (*LookupSend) ProtoMessage()    {}
+func (*LookupSend) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{4}
 }
 
-func (x *LookupSend) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *LookupSend) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LookupSend.Unmarshal(m, b)
 }
-
-func (*LookupSend) ProtoMessage() {}
-
-func (x *LookupSend) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *LookupSend) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LookupSend.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use LookupSend.ProtoReflect.Descriptor instead.
-func (*LookupSend) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{4}
+func (m *LookupSend) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LookupSend.Merge(m, src)
 }
+func (m *LookupSend) XXX_Size() int {
+	return xxx_messageInfo_LookupSend.Size(m)
+}
+func (m *LookupSend) XXX_DiscardUnknown() {
+	xxx_messageInfo_LookupSend.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LookupSend proto.InternalMessageInfo
 
-func (x *LookupSend) GetUserID() []byte {
-	if x != nil {
-		return x.UserID
+func (m *LookupSend) GetUserID() []byte {
+	if m != nil {
+		return m.UserID
 	}
 	return nil
 }
 
-func (x *LookupSend) GetCommID() uint64 {
-	if x != nil {
-		return x.CommID
+func (m *LookupSend) GetCommID() uint64 {
+	if m != nil {
+		return m.CommID
 	}
 	return 0
 }
 
 // Message sent from UDB for looking up a user
 type LookupResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PubKey []byte `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
-	CommID uint64 `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
-	Error  string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
+	PubKey               []byte   `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
+	CommID               uint64   `protobuf:"varint,2,opt,name=commID,proto3" json:"commID,omitempty"`
+	Error                string   `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (x *LookupResponse) Reset() {
-	*x = LookupResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_udMessages_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
+func (m *LookupResponse) Reset()         { *m = LookupResponse{} }
+func (m *LookupResponse) String() string { return proto.CompactTextString(m) }
+func (*LookupResponse) ProtoMessage()    {}
+func (*LookupResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9e0cfdc16fb09bb6, []int{5}
 }
 
-func (x *LookupResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (m *LookupResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LookupResponse.Unmarshal(m, b)
 }
-
-func (*LookupResponse) ProtoMessage() {}
-
-func (x *LookupResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_udMessages_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+func (m *LookupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LookupResponse.Marshal(b, m, deterministic)
 }
-
-// Deprecated: Use LookupResponse.ProtoReflect.Descriptor instead.
-func (*LookupResponse) Descriptor() ([]byte, []int) {
-	return file_udMessages_proto_rawDescGZIP(), []int{5}
+func (m *LookupResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LookupResponse.Merge(m, src)
+}
+func (m *LookupResponse) XXX_Size() int {
+	return xxx_messageInfo_LookupResponse.Size(m)
 }
+func (m *LookupResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_LookupResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LookupResponse proto.InternalMessageInfo
 
-func (x *LookupResponse) GetPubKey() []byte {
-	if x != nil {
-		return x.PubKey
+func (m *LookupResponse) GetPubKey() []byte {
+	if m != nil {
+		return m.PubKey
 	}
 	return nil
 }
 
-func (x *LookupResponse) GetCommID() uint64 {
-	if x != nil {
-		return x.CommID
+func (m *LookupResponse) GetCommID() uint64 {
+	if m != nil {
+		return m.CommID
 	}
 	return 0
 }
 
-func (x *LookupResponse) GetError() string {
-	if x != nil {
-		return x.Error
+func (m *LookupResponse) GetError() string {
+	if m != nil {
+		return m.Error
 	}
 	return ""
 }
 
-var File_udMessages_proto protoreflect.FileDescriptor
-
-var file_udMessages_proto_rawDesc = []byte{
-	0x0a, 0x10, 0x75, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x08, 0x48, 0x61, 0x73,
-	0x68, 0x46, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a,
-	0x07, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72,
-	0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44,
-	0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
-	0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x72, 0x69, 0x67,
-	0x46, 0x61, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x61,
-	0x72, 0x73, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x46, 0x61, 0x63, 0x74, 0x52, 0x09, 0x74, 0x72,
-	0x69, 0x67, 0x46, 0x61, 0x63, 0x74, 0x73, 0x22, 0x49, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63,
-	0x68, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x66, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68,
-	0x46, 0x61, 0x63, 0x74, 0x52, 0x04, 0x66, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f,
-	0x6d, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d,
-	0x49, 0x44, 0x22, 0x6a, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2e, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73,
-	0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f,
-	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3c,
-	0x0a, 0x0a, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06,
-	0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x75, 0x73,
-	0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44, 0x22, 0x56, 0x0a, 0x0e,
-	0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16,
-	0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
-	0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x49, 0x44, 0x12, 0x14,
-	0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
-	0x72, 0x72, 0x6f, 0x72, 0x42, 0x04, 0x5a, 0x02, 0x75, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_udMessages_proto_rawDescOnce sync.Once
-	file_udMessages_proto_rawDescData = file_udMessages_proto_rawDesc
-)
-
-func file_udMessages_proto_rawDescGZIP() []byte {
-	file_udMessages_proto_rawDescOnce.Do(func() {
-		file_udMessages_proto_rawDescData = protoimpl.X.CompressGZIP(file_udMessages_proto_rawDescData)
-	})
-	return file_udMessages_proto_rawDescData
-}
-
-var file_udMessages_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_udMessages_proto_goTypes = []interface{}{
-	(*HashFact)(nil),       // 0: parse.HashFact
-	(*Contact)(nil),        // 1: parse.Contact
-	(*SearchSend)(nil),     // 2: parse.SearchSend
-	(*SearchResponse)(nil), // 3: parse.SearchResponse
-	(*LookupSend)(nil),     // 4: parse.LookupSend
-	(*LookupResponse)(nil), // 5: parse.LookupResponse
-}
-var file_udMessages_proto_depIdxs = []int32{
-	0, // 0: parse.Contact.trigFacts:type_name -> parse.HashFact
-	0, // 1: parse.SearchSend.fact:type_name -> parse.HashFact
-	1, // 2: parse.SearchResponse.contacts:type_name -> parse.Contact
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_udMessages_proto_init() }
-func file_udMessages_proto_init() {
-	if File_udMessages_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_udMessages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HashFact); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_udMessages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Contact); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_udMessages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SearchSend); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_udMessages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SearchResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_udMessages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LookupSend); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_udMessages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LookupResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_udMessages_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   6,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_udMessages_proto_goTypes,
-		DependencyIndexes: file_udMessages_proto_depIdxs,
-		MessageInfos:      file_udMessages_proto_msgTypes,
-	}.Build()
-	File_udMessages_proto = out.File
-	file_udMessages_proto_rawDesc = nil
-	file_udMessages_proto_goTypes = nil
-	file_udMessages_proto_depIdxs = nil
+func init() {
+	proto.RegisterType((*HashFact)(nil), "parse.HashFact")
+	proto.RegisterType((*Contact)(nil), "parse.Contact")
+	proto.RegisterType((*SearchSend)(nil), "parse.SearchSend")
+	proto.RegisterType((*SearchResponse)(nil), "parse.SearchResponse")
+	proto.RegisterType((*LookupSend)(nil), "parse.LookupSend")
+	proto.RegisterType((*LookupResponse)(nil), "parse.LookupResponse")
+}
+
+func init() {
+	proto.RegisterFile("udMessages.proto", fileDescriptor_9e0cfdc16fb09bb6)
+}
+
+var fileDescriptor_9e0cfdc16fb09bb6 = []byte{
+	// 285 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x51, 0xc1, 0x4a, 0xc3, 0x40,
+	0x10, 0x65, 0x9b, 0xa4, 0xb6, 0x63, 0x89, 0xb2, 0x88, 0xe4, 0x18, 0xe2, 0x25, 0x08, 0xe6, 0x50,
+	0xaf, 0x9e, 0xb4, 0x88, 0x41, 0xbd, 0x6c, 0xc1, 0x83, 0xb7, 0x6d, 0x32, 0x36, 0x2a, 0xcd, 0x2e,
+	0x3b, 0x9b, 0x43, 0xff, 0x5e, 0xb2, 0x59, 0x5b, 0x84, 0x2a, 0x78, 0x9b, 0x37, 0xb3, 0xef, 0xcd,
+	0x9b, 0xb7, 0x70, 0xda, 0xd5, 0xcf, 0x48, 0x24, 0xd7, 0x48, 0x85, 0x36, 0xca, 0x2a, 0x1e, 0x69,
+	0x69, 0x08, 0xb3, 0x39, 0x4c, 0x1e, 0x24, 0x35, 0xf7, 0xb2, 0xb2, 0x9c, 0x43, 0xd8, 0x48, 0x6a,
+	0x12, 0x96, 0xb2, 0x7c, 0x26, 0x5c, 0xdd, 0xf7, 0xec, 0x56, 0x63, 0x32, 0x4a, 0x59, 0x1e, 0x09,
+	0x57, 0x67, 0x0d, 0x1c, 0xdd, 0xa9, 0xd6, 0xf6, 0x94, 0x73, 0x18, 0x77, 0x84, 0xa6, 0x5c, 0x78,
+	0x92, 0x47, 0x7d, 0x5f, 0x77, 0xab, 0x47, 0xdc, 0x3a, 0xe2, 0x4c, 0x78, 0xc4, 0xaf, 0x60, 0x6a,
+	0xcd, 0xfb, 0xba, 0x5f, 0x47, 0x49, 0x90, 0x06, 0xf9, 0xf1, 0xfc, 0xa4, 0x70, 0x4e, 0x8a, 0x6f,
+	0x1b, 0x62, 0xff, 0x22, 0x2b, 0x01, 0x96, 0x28, 0x4d, 0xd5, 0x2c, 0xb1, 0xad, 0xf9, 0x05, 0x84,
+	0x6f, 0xb2, 0xb2, 0x09, 0x3b, 0xcc, 0x73, 0xc3, 0x7e, 0x73, 0xa5, 0x36, 0x9b, 0x72, 0xe1, 0x36,
+	0x87, 0xc2, 0xa3, 0xec, 0x03, 0xe2, 0x41, 0x4a, 0x20, 0x69, 0xd5, 0x12, 0xf2, 0x4b, 0x98, 0x54,
+	0xc3, 0x19, 0xe4, 0x25, 0x63, 0x2f, 0xe9, 0xaf, 0x13, 0xbb, 0xf9, 0x6f, 0xaa, 0xfc, 0x0c, 0x22,
+	0x34, 0x46, 0x99, 0x24, 0x48, 0x59, 0x3e, 0x15, 0x03, 0xc8, 0x6e, 0x00, 0x9e, 0x94, 0xfa, 0xec,
+	0xb4, 0xb3, 0xfd, 0x47, 0x46, 0x07, 0x9d, 0xbe, 0x40, 0x3c, 0xb0, 0x77, 0x4e, 0xf7, 0x69, 0xb2,
+	0x1f, 0x69, 0xfe, 0xcb, 0xd5, 0x6d, 0xf8, 0x3a, 0xea, 0xea, 0xd5, 0xd8, 0x7d, 0xff, 0xf5, 0x57,
+	0x00, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x49, 0xa1, 0x5e, 0x12, 0x02, 0x00, 0x00,
 }