diff --git a/nucleus/interfaces/client.go b/nucleus/interfaces/client.go
deleted file mode 100644
index 4d0b9e1ceaf68a23f8089fb0703efd219546a217..0000000000000000000000000000000000000000
--- a/nucleus/interfaces/client.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package interfaces
-
-// Client provides an interface for
-// SBI protocol clients
-type Client interface {
-	GetConfig() ClientConfig
-}
diff --git a/nucleus/interfaces/interfaces.go b/nucleus/interfaces/interfaces.go
new file mode 100644
index 0000000000000000000000000000000000000000..b1fab9242901d819e04198b2ebe2f355ad5ab326
--- /dev/null
+++ b/nucleus/interfaces/interfaces.go
@@ -0,0 +1,31 @@
+package interfaces
+
+// Port provides an interface for
+// the device's ports
+type Port interface {
+}
+
+// Client provides an interface for
+// SBI client implementations
+type Client interface {
+	GetConfig() ClientConfig
+	ListPorts() map[int]Port
+	PushReceiver() error
+}
+
+// PrincipalNetworkDomain provides an
+// interface for PND implementations
+type PrincipalNetworkDomain interface {
+	Destroy() error
+	AddSbi() error
+	RemoveSbi() error
+}
+
+// SouthboundInterface provides an
+// interface for SBI implementations
+type SouthboundInterface interface {
+	AddClient() error
+	RemoveClient() error
+	CollectHeartbeats() error
+	ListClients() map[int]Client
+}
diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go
new file mode 100644
index 0000000000000000000000000000000000000000..f105f8980ee52e6a5eb8d4fc5228004b02f4ba68
--- /dev/null
+++ b/nucleus/principalNetworkDomain.go
@@ -0,0 +1,31 @@
+package nucleus
+
+type pndImplementation struct {
+}
+
+// Interface satisfaction
+func (pnd *pndImplementation) Destroy() error {
+	return destroy()
+}
+
+func (pnd *pndImplementation) AddSbi() error {
+	return addSbi()
+}
+
+func (pnd *pndImplementation) RemoveSbi() error {
+	return removeSbi()
+}
+
+// Actual implementation, bind to struct if
+// neccessary
+func destroy() error {
+	return nil
+}
+
+func addSbi() error {
+	return nil
+}
+
+func removeSbi() error {
+	return nil
+}
diff --git a/sbi/restconf/client/ciena/client.go b/sbi/restconf/client/ciena/client.go
index 6e9a772c9cd56960e75544578249dbb7cb23aef7..47203c3d34773e05496b08ad41599416c32bd333 100644
--- a/sbi/restconf/client/ciena/client.go
+++ b/sbi/restconf/client/ciena/client.go
@@ -29,6 +29,18 @@ func (c MCPClient) GetConfig() interfaces.ClientConfig {
 	return *c.config
 }
 
+// ListPorts is a stub to satisfy the interface
+// TODO: Implement
+func (c MCPClient) ListPorts() map[int]interfaces.Port {
+	return nil
+}
+
+// PushReceiver is a stub to satisfy the interface
+// TODO: Implement
+func (c MCPClient) PushReceiver() error {
+	return nil
+}
+
 //NewMCPClient creates a Ciena flavores TAPI client
 func NewMCPClient(endpoint, username, password string, database *database.Database, config *interfaces.ClientConfig) *MCPClient {
 	// create the transport
diff --git a/sbi/restconf/southboundInterface.go b/sbi/restconf/southboundInterface.go
new file mode 100644
index 0000000000000000000000000000000000000000..18b40efbdf555c5c3110f55333205482029766ea
--- /dev/null
+++ b/sbi/restconf/southboundInterface.go
@@ -0,0 +1,39 @@
+package restconf
+
+type southboundInterface struct {
+}
+
+// Interface satisfaction
+func (sbi *southboundInterface) AddClient() error {
+	return addClient()
+}
+
+func (sbi *southboundInterface) RemoveClient() error {
+	return removeClient()
+}
+
+func (sbi *southboundInterface) CollectHeartbeats() error {
+	return collectHeartbeats()
+}
+
+func (sbi *southboundInterface) ListClients() error {
+	return listClients()
+}
+
+// Actual implementation, bind to struct if
+// neccessary
+func addClient() error {
+	return nil
+}
+
+func removeClient() error {
+	return nil
+}
+
+func collectHeartbeats() error {
+	return nil
+}
+
+func listClients() error {
+	return nil
+}