diff --git a/storage/session.go b/storage/session.go
index 1fc0aec0e43ffa46d95ce07db69936e381a4e0db..2ad3042ed7c76758227a42f751f146ae15cc58b4 100644
--- a/storage/session.go
+++ b/storage/session.go
@@ -282,7 +282,7 @@ func Load(baseDir, password string, currentVersion version.Version,
 			"Failed to load bucket store")
 	}
 
-	s.ud, err = ud.LoadStore(s.kv)
+	s.ud, err = ud.NewOrLoadStore(s.kv)
 	if err != nil {
 		return nil, errors.WithMessage(err, "Failed to load ud store")
 	}
diff --git a/storage/ud/store.go b/storage/ud/store.go
index 33f62113e8218b378df3e6afd2f72ea972a2a6e0..64325e317bef67ef2d192ab64e70ba32da2d5365 100644
--- a/storage/ud/store.go
+++ b/storage/ud/store.go
@@ -8,6 +8,7 @@ import (
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/primitives/fact"
 	"gitlab.com/xx_network/primitives/netTime"
+	"strings"
 )
 
 // Storage constants
@@ -101,17 +102,23 @@ func (s *Store) saveUnconfirmedFacts() error {
 // LOAD FUNCTIONS
 /////////////////////////////////////////////////////////////////
 
-// LoadStore loads the Store object from the provided versioned.KV.
-func LoadStore(kv *versioned.KV) (*Store, error) {
-	kv = kv.Prefix(prefix)
+// NewOrLoadStore loads the Store object from the provided versioned.KV.
+func NewOrLoadStore(kv *versioned.KV) (*Store, error) {
 
 	s := &Store{
 		confirmedFacts:   make(map[fact.Fact]struct{}, 0),
 		unconfirmedFacts: make(map[string]fact.Fact, 0),
-		kv:               kv,
+		kv:               kv.Prefix(prefix),
 	}
 
-	return s, s.load()
+	if err := s.load(); err != nil {
+		if strings.Contains(err.Error(), "object not found") ||
+			strings.Contains(err.Error(), "no such file or directory") {
+			return s, s.save()
+		}
+	}
+
+	return s, nil
 
 }
 
@@ -143,6 +150,9 @@ func (s *Store) loadConfirmedFacts() error {
 
 	// Place the map in memory
 	s.confirmedFacts, err = s.unmarshalConfirmedFacts(obj.Data)
+	if err != nil {
+		return err
+	}
 
 	return nil
 }
@@ -158,6 +168,9 @@ func (s *Store) loadUnconfirmedFacts() error {
 
 	// Place the map in memory
 	s.unconfirmedFacts, err = s.unmarshalUnconfirmedFacts(obj.Data)
+	if err != nil {
+		return err
+	}
 
 	return nil
 }
diff --git a/storage/ud/store_test.go b/storage/ud/store_test.go
index 135348eed9bfa97db73931db19d81fc1a69b3cff..977aba8ef641029199bf186d4e9a1af2fc692131 100644
--- a/storage/ud/store_test.go
+++ b/storage/ud/store_test.go
@@ -4,11 +4,13 @@ import (
 	"bytes"
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/ekv"
+	"gitlab.com/elixxir/primitives/fact"
 	"reflect"
 	"testing"
 )
 
-func TestLoadStore(t *testing.T) {
+// Test it loads a Store from storage if it exists.
+func TestNewOrLoadStore_LoadStore(t *testing.T) {
 	kv := versioned.NewKV(make(ekv.Memstore))
 
 	expectedStore, err := NewStore(kv)
@@ -16,13 +18,37 @@ func TestLoadStore(t *testing.T) {
 		t.Errorf("NewStore() produced an error: %v", err)
 	}
 
-	receivedStore, err := LoadStore(kv)
+	receivedStore, err := NewOrLoadStore(kv)
 	if err != nil {
-		t.Fatalf("LoadStore() produced an error: %v", err)
+		t.Fatalf("NewOrLoadStore() produced an error: %v", err)
 	}
 
 	if !reflect.DeepEqual(expectedStore, receivedStore) {
-		t.Errorf("LoadStore() returned incorrect Store."+
+		t.Errorf("NewOrLoadStore() returned incorrect Store."+
+			"\nexpected: %#v\nreceived: %#v", expectedStore,
+			receivedStore)
+
+	}
+
+}
+
+// Test that it creates a new store if an old one is not in storage.
+func TestNewOrLoadStore_NewStore(t *testing.T) {
+	kv := versioned.NewKV(make(ekv.Memstore))
+
+	receivedStore, err := NewOrLoadStore(kv)
+	if err != nil {
+		t.Fatalf("NewOrLoadStore() produced an error: %v", err)
+	}
+
+	expectedStore := &Store{
+		confirmedFacts:   make(map[fact.Fact]struct{}, 0),
+		unconfirmedFacts: make(map[string]fact.Fact, 0),
+		kv:               kv.Prefix(prefix),
+	}
+
+	if !reflect.DeepEqual(expectedStore, receivedStore) {
+		t.Errorf("NewOrLoadStore() returned incorrect Store."+
 			"\nexpected: %#v\nreceived: %#v", expectedStore,
 			receivedStore)