merge with vpn branch which fixes RegisterDevice method signature
diff --git a/core/vpn/in_memory_manager.go b/core/vpn/in_memory_manager.go
index f23ff43..eef4097 100644
--- a/core/vpn/in_memory_manager.go
+++ b/core/vpn/in_memory_manager.go
@@ -27,7 +27,7 @@
 	ipm            IPManager
 }
 
-func NewInMemoryManager(ipm IPManager) *InMemoryManager {
+func NewInMemoryManager(ipm IPManager) Manager {
 	return &InMemoryManager{
 		devices:        make([]*types.DeviceInfo, 0),
 		keyToDevices:   make(map[types.PublicKey]*types.DeviceInfo),
diff --git a/core/vpn/manager.go b/core/vpn/manager.go
index fdb29cb..b5e380b 100644
--- a/core/vpn/manager.go
+++ b/core/vpn/manager.go
@@ -9,10 +9,11 @@
 // Manager interface manages mesh VPN configuration for all the devices registed by all users.
 // It does enforce device to device ACLs but delegates user authorization to the client.
 type Manager interface {
-	// Registers new device with given public key and name.
-	// New device is isolated from the rest of the network until it is explicitely added to
-	// an existing group.
-	RegisterDevice(name string, pubKey types.PublicKey) error
+	// Registers new device.
+	// Returns VPN network configuration on success and error otherwise.
+	// By default new devices have access to other machines owned by the same user
+	// and a PCloud entrypoint.
+	RegisterDevice(d types.DeviceInfo) (*types.NetworkMap, error)
 	// Completely removes device with given public key from the network.
 	RemoveDevice(pubKey types.PublicKey) error
 	// Creates new group with given name and returns it's id.