diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go
index fd54a00abdd9a60e65859978582eb502dc06854d..85bdff01b87db80b0fe4b636ece5cdb0d5decea5 100644
--- a/nucleus/principalNetworkDomain.go
+++ b/nucleus/principalNetworkDomain.go
@@ -7,42 +7,49 @@ import (
 // PrincipalNetworkDomain provides an
 // interface for PND implementations
 type PrincipalNetworkDomain interface {
+	GetName() string
 	Destroy() error
-	AddSbi() error
-	RemoveSbi() error
+	AddSbi(SouthboundInterface) error
+	RemoveSbi(string) error
 	AddDevice(Device) error
 	RemoveDevice(uuid uuid.UUID) error
 }
 
 type pndImplementation struct {
-	name    string
-	sbi     map[string]SouthboundInterface
-	devices map[uuid.UUID]Device
+	Name        string
+	Description string
+	Sbi         map[string]SouthboundInterface
+	Devices     map[uuid.UUID]Device
 }
 
 //NewPND creates a Principle Network Domain
-func NewPND(name string, sbi SouthboundInterface) PrincipalNetworkDomain {
+func NewPND(name, description string, sbi SouthboundInterface) PrincipalNetworkDomain {
 	sbic := make(map[string]SouthboundInterface)
 	sbic["default"] = sbi
 	devices := make(map[uuid.UUID]Device)
 	return &pndImplementation{
-		name:    name,
-		sbi:     sbic,
-		devices: devices,
+		Name:        name,
+		Description: description,
+		Sbi:         sbic,
+		Devices:     devices,
 	}
 }
 
+func (pnd *pndImplementation) GetName() string {
+	return pnd.Name
+}
+
 // Interface satisfaction
 func (pnd *pndImplementation) Destroy() error {
 	return destroy()
 }
 
-func (pnd *pndImplementation) AddSbi() error {
-	return addSbi()
+func (pnd *pndImplementation) AddSbi(sbi SouthboundInterface) error {
+	return pnd.addSbi(sbi)
 }
 
-func (pnd *pndImplementation) RemoveSbi() error {
-	return removeSbi()
+func (pnd *pndImplementation) RemoveSbi(sbiIdentifier string) error {
+	return pnd.removeSbi(sbiIdentifier)
 }
 
 func (pnd *pndImplementation) AddDevice(device Device) error {
@@ -59,20 +66,22 @@ func destroy() error {
 	return nil
 }
 
-func addSbi() error {
+func (pnd *pndImplementation) addSbi(sbi SouthboundInterface) error {
+	pnd.Sbi[sbi.SbiIdentifier()] = sbi
 	return nil
 }
 
-func removeSbi() error {
+func (pnd *pndImplementation) removeSbi(sbiIdentifier string) error {
+	delete(pnd.Sbi, sbiIdentifier)
 	return nil
 }
 
 func (pnd *pndImplementation) addDevice(device Device) error {
-	pnd.devices[device.Config.Uuid] = device
+	pnd.Devices[device.Config.Uuid] = device
 	return nil
 }
 
 func (pnd *pndImplementation) removeDevice(uuid uuid.UUID) error {
-	delete(pnd.devices, uuid)
+	delete(pnd.Devices, uuid)
 	return nil
 }
diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go
index 133195a8d7e0cf2a3203c2c1bfc6aa4d74602a52..fab425652d76b69eaa95f8a4833c4ce6f1a40067 100644
--- a/nucleus/principalNetworkDomain_test.go
+++ b/nucleus/principalNetworkDomain_test.go
@@ -79,9 +79,9 @@ func Test_pndImplementation_AddDevice(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.AddDevice(tt.args.device); (err != nil) != tt.wantErr {
 				t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr)
@@ -106,9 +106,9 @@ func Test_pndImplementation_AddSbi(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.AddSbi(); (err != nil) != tt.wantErr {
 				t.Errorf("AddSbi() error = %v, wantErr %v", err, tt.wantErr)
@@ -133,9 +133,9 @@ func Test_pndImplementation_Destroy(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.Destroy(); (err != nil) != tt.wantErr {
 				t.Errorf("Destroy() error = %v, wantErr %v", err, tt.wantErr)
@@ -164,9 +164,9 @@ func Test_pndImplementation_RemoveDevice(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.RemoveDevice(tt.args.uuid); (err != nil) != tt.wantErr {
 				t.Errorf("RemoveDevice() error = %v, wantErr %v", err, tt.wantErr)
@@ -191,9 +191,9 @@ func Test_pndImplementation_RemoveSbi(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.RemoveSbi(); (err != nil) != tt.wantErr {
 				t.Errorf("RemoveSbi() error = %v, wantErr %v", err, tt.wantErr)
@@ -222,9 +222,9 @@ func Test_pndImplementation_addDevice(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.addDevice(tt.args.device); (err != nil) != tt.wantErr {
 				t.Errorf("addDevice() error = %v, wantErr %v", err, tt.wantErr)
@@ -253,9 +253,9 @@ func Test_pndImplementation_removeDevice(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			pnd := &pndImplementation{
-				name:    tt.fields.name,
-				sbi:     tt.fields.sbi,
-				devices: tt.fields.devices,
+				Name:    tt.fields.name,
+				Sbi:     tt.fields.sbi,
+				Devices: tt.fields.devices,
 			}
 			if err := pnd.removeDevice(tt.args.uuid); (err != nil) != tt.wantErr {
 				t.Errorf("removeDevice() error = %v, wantErr %v", err, tt.wantErr)