handle errors
diff --git a/core/vpn/in_memory_manager.go b/core/vpn/in_memory_manager.go
index 3f12635..a95bfd4 100644
--- a/core/vpn/in_memory_manager.go
+++ b/core/vpn/in_memory_manager.go
@@ -130,9 +130,9 @@
 	g.Peers = append(g.Peers, d)
 	groups = append(groups, g)
 	m.deviceToGroups[pubKey] = groups
-	ret := m.genNetworkMap(d)
+	ret, err := m.genNetworkMap(d)
 	m.notifyPeers(d, g)
-	return ret, nil
+	return ret, err
 }
 
 func (m *InMemoryManager) RemoveDeviceFromGroup(pubKey types.PublicKey, id types.GroupID) (*types.NetworkMap, error) {
@@ -176,7 +176,7 @@
 		panic("Should not reach")
 	}
 	m.notifyPeers(d, g)
-	return m.genNetworkMap(d), nil
+	return m.genNetworkMap(d)
 }
 
 func (m *InMemoryManager) GetNetworkMap(pubKey types.PublicKey) (*types.NetworkMap, error) {
@@ -201,7 +201,10 @@
 	// TODO(giolekva): maybe run this in a goroutine?
 	for _, peer := range g.Peers {
 		if peer.PublicKey != d.PublicKey {
-			netMap := m.genNetworkMap(peer)
+			netMap, err := m.genNetworkMap(peer)
+			if err != nil {
+				panic(err) // TODO(giolekva): handle properly
+			}
 			for _, cb := range m.callbacks[peer.PublicKey] {
 				cb(netMap)
 			}