diff --git a/controller/api/apiUtil_test.go b/controller/api/apiUtil_test.go
index 78ae66d8bfbcc64121370f53f05840feaf702f6f..134949d52d050abeea7df18ef0ac32ffd0eb3d7f 100644
--- a/controller/api/apiUtil_test.go
+++ b/controller/api/apiUtil_test.go
@@ -5,9 +5,9 @@ import (
 	"time"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
 	rbacImpl "code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	"github.com/sethvargo/go-password/password"
 	"golang.org/x/crypto/argon2"
@@ -142,7 +142,7 @@ func createTestUserToken(userName string, validTokenRequired bool) (string, erro
 	}
 
 	if validTokenRequired {
-		user, err := userService.Get(store.Query{Name: userName})
+		user, err := userService.Get(model.Query{Name: userName})
 		if err != nil {
 			return token, err
 		}
diff --git a/controller/app/Service.go b/controller/app/Service.go
index 1f92ddc9a3a33f4aafcafac80b64f2247b497373..d7d09107547745dab64cbd5518a16e3b0b00a329 100644
--- a/controller/app/Service.go
+++ b/controller/app/Service.go
@@ -3,7 +3,7 @@ package app
 import (
 	"fmt"
 
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"github.com/google/uuid"
 )
 
@@ -31,7 +31,7 @@ func (a *Service) Register(appName, token string) (*App, error) {
 		return nil, fmt.Errorf("token not valid")
 	}
 
-	exisitingApp, err := a.store.Get(store.Query{ID: uuid.Nil, Name: appName})
+	exisitingApp, err := a.store.Get(model.Query{ID: uuid.Nil, Name: appName})
 	if err != nil {
 		if exisitingApp.ID == uuid.Nil {
 			return a.createNewApp(appName)
@@ -45,7 +45,7 @@ func (a *Service) Register(appName, token string) (*App, error) {
 
 // Deregister deregisters an app.
 func (a *Service) Deregister(appName string) error {
-	app, err := a.store.Get(store.Query{Name: appName})
+	app, err := a.store.Get(model.Query{Name: appName})
 	if err != nil {
 		return err
 	}
diff --git a/controller/app/Store.go b/controller/app/Store.go
index 510fe56ea7c47911632ec95bd0d16b2ea2f1c3e2..446cbf81fd1987e007a5f8e6552ade7d7dee5add 100644
--- a/controller/app/Store.go
+++ b/controller/app/Store.go
@@ -5,8 +5,8 @@ import (
 	"log"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"github.com/google/uuid"
 	"go.mongodb.org/mongo-driver/bson"
@@ -19,7 +19,7 @@ type ManagementStore interface {
 	Add(App) error
 	Update(App) error
 	Delete(App) error
-	Get(store.Query) (App, error)
+	Get(model.Query) (App, error)
 	GetAll() ([]App, error)
 }
 
@@ -36,7 +36,7 @@ func NewAppStore() ManagementStore {
 }
 
 // Get takes a app's UUID or name and returns the app.
-func (s *Store) Get(query store.Query) (App, error) {
+func (s *Store) Get(query model.Query) (App, error) {
 	var loadedApp App
 
 	if query.ID.String() != "" && query.ID != uuid.Nil {
diff --git a/controller/controller.go b/controller/controller.go
index a7db812da4a085fd918902e2afdcc9882554a193..6d55f93d12bbb9eebf453a2d11a1764da34ed0d2 100644
--- a/controller/controller.go
+++ b/controller/controller.go
@@ -249,7 +249,7 @@ func startGrpc() error {
 
 // createPrincipalNetworkDomain initializes the controller with an initial PND.
 func createPrincipalNetworkDomain() error {
-	basePnd, err := c.pndService.Get(store.Query{ID: config.BasePndUUID})
+	basePnd, err := c.pndService.Get(model.Query{ID: config.BasePndUUID})
 	if err != nil {
 		log.Info(err)
 	}
@@ -272,7 +272,7 @@ func createPrincipalNetworkDomain() error {
 
 func ensureDefaultRoleExists() error {
 	defaultAdminRoleName := "admin"
-	adminRole, err := c.roleService.Get(store.Query{ID: uuid.Nil, Name: defaultAdminRoleName})
+	adminRole, err := c.roleService.Get(model.Query{ID: uuid.Nil, Name: defaultAdminRoleName})
 	if err != nil {
 		log.Info(err)
 	}
@@ -331,7 +331,7 @@ func ensureDefaultRoleExists() error {
 
 func ensureDefaultUserExists() error {
 	defaultUserName := "admin"
-	adminUser, err := c.userService.Get(store.Query{ID: uuid.Nil, Name: defaultUserName})
+	adminUser, err := c.userService.Get(model.Query{ID: uuid.Nil, Name: defaultUserName})
 	if err != nil {
 		log.Info(err)
 	}
diff --git a/controller/interfaces/networkdomain/pndService.go b/controller/interfaces/networkdomain/pndService.go
index ecc0c715b878df9801640e01b023d3bac1454910..df05d183e472cfaf3c61a2ada2e3959496ca7b9e 100644
--- a/controller/interfaces/networkdomain/pndService.go
+++ b/controller/interfaces/networkdomain/pndService.go
@@ -1,17 +1,13 @@
 package networkdomain
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-)
-
-// Service describes an interface for PND service implementation.
-type Service interface {
-	Add(NetworkDomain) error
-	Delete(NetworkDomain) error
-	Get(store.Query) (NetworkDomain, error)
-	GetAll() ([]NetworkDomain, error)
-	// Note: Implement these in case we want to use cSBI again.
-	// PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
-	// AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
-	// RemovePendingChannel(id uuid.UUID)
-}
+// // Service describes an interface for PND service implementation.
+// type Service interface {
+// 	Add(NetworkDomain) error
+// 	Delete(NetworkDomain) error
+// 	Get(model.Query) (NetworkDomain, error)
+// 	GetAll() ([]NetworkDomain, error)
+// 	// Note: Implement these in case we want to use cSBI again.
+// 	// PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
+// 	// AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
+// 	// RemovePendingChannel(id uuid.UUID)
+// }
diff --git a/controller/interfaces/networkdomain/pndStore.go b/controller/interfaces/networkdomain/pndStore.go
index b88d61a213ced30e1fa55ef004408c126d089f6a..548ea284af3a8d4035ef22bce781f8c6f2e6259a 100644
--- a/controller/interfaces/networkdomain/pndStore.go
+++ b/controller/interfaces/networkdomain/pndStore.go
@@ -1,25 +1,18 @@
 package networkdomain
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-	"github.com/google/uuid"
+// // PndStore describes an interface for pnd store implementations.
+// type PndStore interface {
+// 	Add(NetworkDomain) error
+// 	Delete(NetworkDomain) error
+// 	Get(model.Query) (LoadedPnd, error)
+// 	GetAll() ([]LoadedPnd, error)
+// 	PendingChannels(id uuid.UUID, parseErrors ...error) (chan Details, error)
+// 	AddPendingChannel(id uuid.UUID, ch chan Details)
+// 	RemovePendingChannel(id uuid.UUID)
+// }
 
-	tpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/transport"
-)
-
-// PndStore describes an interface for pnd store implementations.
-type PndStore interface {
-	Add(NetworkDomain) error
-	Delete(NetworkDomain) error
-	Get(store.Query) (LoadedPnd, error)
-	GetAll() ([]LoadedPnd, error)
-	PendingChannels(id uuid.UUID, parseErrors ...error) (chan Details, error)
-	AddPendingChannel(id uuid.UUID, ch chan Details)
-	RemovePendingChannel(id uuid.UUID)
-}
-
-type Details struct {
-	ID              string
-	Address         string
-	TransportOption *tpb.TransportOption
-}
+// type Details struct {
+// 	ID              string
+// 	Address         string
+// 	TransportOption *tpb.TransportOption
+// }
diff --git a/controller/interfaces/networkelement/networkElementService.go b/controller/interfaces/networkelement/networkElementService.go
index e77d4ec35cadcb7a4f2d3b449f91baef7d6122f3..8e1b149ba92349b207031533d44c4e34948966a0 100644
--- a/controller/interfaces/networkelement/networkElementService.go
+++ b/controller/interfaces/networkelement/networkElementService.go
@@ -1,17 +1,12 @@
 package networkelement
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-	"github.com/google/uuid"
-)
-
-// Service describes an interface for network element service implementations.
-type Service interface {
-	Add(NetworkElement) error
-	Update(NetworkElement) error
-	UpdateModel(uuid.UUID, string) error
-	Delete(NetworkElement) error
-	Get(store.Query) (NetworkElement, error)
-	GetAll() ([]NetworkElement, error)
-	GetAllAsLoaded() ([]LoadedNetworkElement, error)
-}
+// // Service describes an interface for network element service implementations.
+// type Service interface {
+// 	Add(NetworkElement) error
+// 	Update(NetworkElement) error
+// 	UpdateModel(uuid.UUID, string) error
+// 	Delete(NetworkElement) error
+// 	Get(model.Query) (NetworkElement, error)
+// 	GetAll() ([]NetworkElement, error)
+// 	GetAllAsLoaded() ([]LoadedNetworkElement, error)
+// }
diff --git a/controller/interfaces/plugin/pluginService.go b/controller/interfaces/plugin/pluginService.go
index ad4e1f3b33ba5539b35655f386675c100b45816a..801acaa9e6f06e02337ef0442b1975e7b9b1007f 100644
--- a/controller/interfaces/plugin/pluginService.go
+++ b/controller/interfaces/plugin/pluginService.go
@@ -1,15 +1,10 @@
 package plugin
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-	"github.com/google/uuid"
-)
-
-// Service describes an interface for plugin service implementations.
-type Service interface {
-	Add(Plugin) error
-	Delete(Plugin) error
-	Get(store.Query) (Plugin, error)
-	GetAll() ([]Plugin, error)
-	RequestPlugin(uuid.UUID) (Plugin, error)
-}
+// // Service describes an interface for plugin service implementations.
+// type Service interface {
+// 	Add(Plugin) error
+// 	Delete(Plugin) error
+// 	Get(model.Query) (Plugin, error)
+// 	GetAll() ([]Plugin, error)
+// 	RequestPlugin(uuid.UUID) (Plugin, error)
+// }
diff --git a/controller/interfaces/plugin/pluginStore.go b/controller/interfaces/plugin/pluginStore.go
index 0e8ef0a5eb40a7a546676a8b675b5489f9587e22..1f25a3c79f29ce41401045b5c5aa42c7b9df9ed1 100644
--- a/controller/interfaces/plugin/pluginStore.go
+++ b/controller/interfaces/plugin/pluginStore.go
@@ -1,14 +1,10 @@
 package plugin
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-)
-
-// Store describes an interface for plugin store implementations.
-type Store interface {
-	Add(Plugin) error
-	Update(Plugin) error
-	Delete(Plugin) error
-	Get(store.Query) (LoadedPlugin, error)
-	GetAll() ([]LoadedPlugin, error)
-}
+// // Store describes an interface for plugin store implementations.
+// type Store interface {
+// 	Add(Plugin) error
+// 	Update(Plugin) error
+// 	Delete(Plugin) error
+// 	Get(model.Query) (LoadedPlugin, error)
+// 	GetAll() ([]LoadedPlugin, error)
+// }
diff --git a/controller/interfaces/rbac/rbacService.go b/controller/interfaces/rbac/rbacService.go
index 39645f269225e2ff05abe256269002ce947823bd..84862f715004c0bd9a7cb78bd6d4b6e3f02f0b38 100644
--- a/controller/interfaces/rbac/rbacService.go
+++ b/controller/interfaces/rbac/rbacService.go
@@ -1,15 +1,13 @@
 package rbac
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-)
+import "code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 // UserService describes an interface for user service implementation.
 type UserService interface {
 	Add(User) error
 	Delete(User) error
 	Update(User) error
-	Get(store.Query) (User, error)
+	Get(model.Query) (User, error)
 	GetAll() ([]User, error)
 }
 
@@ -18,6 +16,6 @@ type RoleService interface {
 	Add(Role) error
 	Delete(Role) error
 	Update(Role) error
-	Get(store.Query) (Role, error)
+	Get(model.Query) (Role, error)
 	GetAll() ([]Role, error)
 }
diff --git a/controller/interfaces/rbac/roleStore.go b/controller/interfaces/rbac/roleStore.go
index 88ee8f59feb93ac99aaf61c35c2ab0b9f94af9ce..a26e54d107d27a1148274a5d1c02282c4e57a827 100644
--- a/controller/interfaces/rbac/roleStore.go
+++ b/controller/interfaces/rbac/roleStore.go
@@ -1,12 +1,12 @@
 package rbac
 
-import "code.fbi.h-da.de/danet/gosdn/controller/store"
+import "code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 // RoleStore describes an interface for role store implementations.
 type RoleStore interface {
 	Add(r Role) error
 	Update(r Role) error
 	Delete(Role) error
-	Get(store.Query) (LoadedRole, error)
+	Get(model.Query) (LoadedRole, error)
 	GetAll() ([]LoadedRole, error)
 }
diff --git a/controller/interfaces/rbac/userStore.go b/controller/interfaces/rbac/userStore.go
index 014a20ce0ae06cc0091f9fefa4ab5b834059fafd..a69f7acb686b7afdd991ec836438ffd75cbd1121 100644
--- a/controller/interfaces/rbac/userStore.go
+++ b/controller/interfaces/rbac/userStore.go
@@ -1,14 +1,12 @@
 package rbac
 
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-)
+import "code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 // UserStore describes an interface for user store implementations.
 type UserStore interface {
 	Add(u User) error
 	Update(u User) error
 	Delete(User) error
-	Get(store.Query) (LoadedUser, error)
+	Get(model.Query) (LoadedUser, error)
 	GetAll() ([]LoadedUser, error)
 }
diff --git a/controller/mocks/PndService.go b/controller/mocks/PndService.go
index 563ef3ce56ff72dae8cb7e228aa49beca41e0b97..03a006596dec8ae9cbe6aea4c73d0dd518a5dc19 100644
--- a/controller/mocks/PndService.go
+++ b/controller/mocks/PndService.go
@@ -42,11 +42,11 @@ func (_m *PndService) Delete(_a0 networkdomain.NetworkDomain) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *PndService) Get(_a0 store.Query) (networkdomain.NetworkDomain, error) {
+func (_m *PndService) Get(_a0 model.Query) (networkdomain.NetworkDomain, error) {
 	ret := _m.Called(_a0)
 
 	var r0 networkdomain.NetworkDomain
-	if rf, ok := ret.Get(0).(func(store.Query) networkdomain.NetworkDomain); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) networkdomain.NetworkDomain); ok {
 		r0 = rf(_a0)
 	} else {
 		if ret.Get(0) != nil {
@@ -55,7 +55,7 @@ func (_m *PndService) Get(_a0 store.Query) (networkdomain.NetworkDomain, error)
 	}
 
 	var r1 error
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/PndStore.go b/controller/mocks/PndStore.go
index 9d8512cadf80b3061150ce1c0a3c72f38f9c22e8..657dff27f886e3574faf6ab337612636f5ec89cb 100644
--- a/controller/mocks/PndStore.go
+++ b/controller/mocks/PndStore.go
@@ -51,21 +51,21 @@ func (_m *PndStore) Delete(_a0 networkdomain.NetworkDomain) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *PndStore) Get(_a0 store.Query) (networkdomain.LoadedPnd, error) {
+func (_m *PndStore) Get(_a0 model.Query) (networkdomain.LoadedPnd, error) {
 	ret := _m.Called(_a0)
 
 	var r0 networkdomain.LoadedPnd
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (networkdomain.LoadedPnd, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (networkdomain.LoadedPnd, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) networkdomain.LoadedPnd); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) networkdomain.LoadedPnd); ok {
 		r0 = rf(_a0)
 	} else {
 		r0 = ret.Get(0).(networkdomain.LoadedPnd)
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/RoleService.go b/controller/mocks/RoleService.go
index c3ce6cb89968232100beaae5c5cb61167cba94f2..7925d9676f2fed995263bc4a61bc957075b9f259 100644
--- a/controller/mocks/RoleService.go
+++ b/controller/mocks/RoleService.go
@@ -42,15 +42,15 @@ func (_m *RoleService) Delete(_a0 rbac.Role) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *RoleService) Get(_a0 store.Query) (rbac.Role, error) {
+func (_m *RoleService) Get(_a0 model.Query) (rbac.Role, error) {
 	ret := _m.Called(_a0)
 
 	var r0 rbac.Role
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (rbac.Role, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (rbac.Role, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) rbac.Role); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) rbac.Role); ok {
 		r0 = rf(_a0)
 	} else {
 		if ret.Get(0) != nil {
@@ -58,7 +58,7 @@ func (_m *RoleService) Get(_a0 store.Query) (rbac.Role, error) {
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/RoleStore.go b/controller/mocks/RoleStore.go
index 18d497f5e2e89f57b218a288150e766254e8e5a2..3467115f20f8ccd93d46cd956637060fcae19c32 100644
--- a/controller/mocks/RoleStore.go
+++ b/controller/mocks/RoleStore.go
@@ -42,21 +42,21 @@ func (_m *RoleStore) Delete(_a0 rbac.Role) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *RoleStore) Get(_a0 store.Query) (rbac.LoadedRole, error) {
+func (_m *RoleStore) Get(_a0 model.Query) (rbac.LoadedRole, error) {
 	ret := _m.Called(_a0)
 
 	var r0 rbac.LoadedRole
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (rbac.LoadedRole, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (rbac.LoadedRole, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) rbac.LoadedRole); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) rbac.LoadedRole); ok {
 		r0 = rf(_a0)
 	} else {
 		r0 = ret.Get(0).(rbac.LoadedRole)
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/Store.go b/controller/mocks/Store.go
index 0662aa8c5d64ca937f792523feda9fe85e533658..3415cc22282995522b1d29438990a26c2dbcde37 100644
--- a/controller/mocks/Store.go
+++ b/controller/mocks/Store.go
@@ -42,21 +42,21 @@ func (_m *Store) Delete(_a0 networkelement.NetworkElement) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *Store) Get(_a0 store.Query) (networkelement.LoadedNetworkElement, error) {
+func (_m *Store) Get(_a0 model.Query) (networkelement.LoadedNetworkElement, error) {
 	ret := _m.Called(_a0)
 
 	var r0 networkelement.LoadedNetworkElement
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (networkelement.LoadedNetworkElement, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (networkelement.LoadedNetworkElement, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) networkelement.LoadedNetworkElement); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) networkelement.LoadedNetworkElement); ok {
 		r0 = rf(_a0)
 	} else {
 		r0 = ret.Get(0).(networkelement.LoadedNetworkElement)
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/UserService.go b/controller/mocks/UserService.go
index 1f8be179ee86a8990d97a0366d5b86b109e2a64d..83d2ddcdfd39dc6e17190f532f2b8e3e2515cd84 100644
--- a/controller/mocks/UserService.go
+++ b/controller/mocks/UserService.go
@@ -42,15 +42,15 @@ func (_m *UserService) Delete(_a0 rbac.User) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *UserService) Get(_a0 store.Query) (rbac.User, error) {
+func (_m *UserService) Get(_a0 model.Query) (rbac.User, error) {
 	ret := _m.Called(_a0)
 
 	var r0 rbac.User
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (rbac.User, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (rbac.User, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) rbac.User); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) rbac.User); ok {
 		r0 = rf(_a0)
 	} else {
 		if ret.Get(0) != nil {
@@ -58,7 +58,7 @@ func (_m *UserService) Get(_a0 store.Query) (rbac.User, error) {
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/mocks/UserStore.go b/controller/mocks/UserStore.go
index bc16141f0bdc0b058993fb7da68e846a83426c9f..c2cc5d41ec0938475a9ffdc3076148137c052587 100644
--- a/controller/mocks/UserStore.go
+++ b/controller/mocks/UserStore.go
@@ -42,21 +42,21 @@ func (_m *UserStore) Delete(_a0 rbac.User) error {
 }
 
 // Get provides a mock function with given fields: _a0
-func (_m *UserStore) Get(_a0 store.Query) (rbac.LoadedUser, error) {
+func (_m *UserStore) Get(_a0 model.Query) (rbac.LoadedUser, error) {
 	ret := _m.Called(_a0)
 
 	var r0 rbac.LoadedUser
 	var r1 error
-	if rf, ok := ret.Get(0).(func(store.Query) (rbac.LoadedUser, error)); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) (rbac.LoadedUser, error)); ok {
 		return rf(_a0)
 	}
-	if rf, ok := ret.Get(0).(func(store.Query) rbac.LoadedUser); ok {
+	if rf, ok := ret.Get(0).(func(model.Query) rbac.LoadedUser); ok {
 		r0 = rf(_a0)
 	} else {
 		r0 = ret.Get(0).(rbac.LoadedUser)
 	}
 
-	if rf, ok := ret.Get(1).(func(store.Query) error); ok {
+	if rf, ok := ret.Get(1).(func(model.Query) error); ok {
 		r1 = rf(_a0)
 	} else {
 		r1 = ret.Error(1)
diff --git a/controller/northbound/server/auth.go b/controller/northbound/server/auth.go
index 6466bac6ee6032c9dd477936992b56db6b0dd769..e3283b738e7949e628990678359105d483d103f2 100644
--- a/controller/northbound/server/auth.go
+++ b/controller/northbound/server/auth.go
@@ -8,8 +8,8 @@ import (
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/bufbuild/protovalidate-go"
 	"github.com/prometheus/client_golang/prometheus"
 	"golang.org/x/crypto/argon2"
@@ -66,7 +66,7 @@ func (s AuthServer) Login(ctx context.Context, request *apb.LoginRequest) (*apb.
 		return nil, err
 	}
 
-	userToUpdate, err := s.userService.Get(store.Query{Name: user.UserName})
+	userToUpdate, err := s.userService.Get(model.Query{Name: user.UserName})
 	if err != nil {
 		return nil, err
 	}
@@ -108,7 +108,7 @@ func (s AuthServer) Logout(ctx context.Context, request *apb.LogoutRequest) (*ap
 
 // isValidUser checks if the provided user name fits to a stored one and then checks if the provided password is correct.
 func (s AuthServer) isValidUser(user rbac.User) error {
-	storedUser, err := s.userService.Get(store.Query{Name: user.Name()})
+	storedUser, err := s.userService.Get(model.Query{Name: user.Name()})
 	if err != nil {
 		return err
 	}
@@ -154,7 +154,7 @@ func (s AuthServer) handleLogout(ctx context.Context, userName string) error {
 			return status.Errorf(codes.Aborted, "missing match of user associated to token and provided user name")
 		}
 
-		storedUser, err := s.userService.Get(store.Query{Name: userName})
+		storedUser, err := s.userService.Get(model.Query{Name: userName})
 		if err != nil {
 			return err
 		}
diff --git a/controller/northbound/server/auth_interceptor.go b/controller/northbound/server/auth_interceptor.go
index 30ffa2ea982be33282ab3db1c86cfe2f6e22d06e..6a389b6dd88c0636837f999b4bd013edde5af6c1 100644
--- a/controller/northbound/server/auth_interceptor.go
+++ b/controller/northbound/server/auth_interceptor.go
@@ -5,11 +5,11 @@ import (
 	"time"
 
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 	csbipb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/csbi"
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
@@ -92,7 +92,7 @@ func (auth *AuthInterceptor) authorize(ctx context.Context, method string) error
 			return status.Errorf(codes.PermissionDenied, "token expired at %v, please login", time.Unix(claims.ExpiresAt, 0))
 		}
 
-		user, err := auth.userService.Get(store.Query{Name: claims.Username})
+		user, err := auth.userService.Get(model.Query{Name: claims.Username})
 		if err != nil {
 			return err
 		}
diff --git a/controller/northbound/server/configurationmanagement.go b/controller/northbound/server/configurationmanagement.go
index cef101a4c68b90312905251ad5de280881493a1a..3c6ba847cfd0aa47883db604d70abf76400790ef 100644
--- a/controller/northbound/server/configurationmanagement.go
+++ b/controller/northbound/server/configurationmanagement.go
@@ -12,7 +12,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
@@ -268,19 +267,19 @@ func (c ConfigurationManagementServer) createTopology(sdnConfig *loadedSDNConfig
 	}
 
 	for _, inputPort := range sdnConfig.Links {
-		sourceNode, err := c.nodeService.Get(store.Query{ID: inputPort.SourceNode.ID})
+		sourceNode, err := c.nodeService.Get(model.Query{ID: inputPort.SourceNode.ID})
 		if err != nil {
 			return err
 		}
-		targetNode, err := c.nodeService.Get(store.Query{ID: inputPort.TargetNode.ID})
+		targetNode, err := c.nodeService.Get(model.Query{ID: inputPort.TargetNode.ID})
 		if err != nil {
 			return err
 		}
-		sourcePort, err := c.portService.Get(store.Query{ID: inputPort.SourcePort.ID})
+		sourcePort, err := c.portService.Get(model.Query{ID: inputPort.SourcePort.ID})
 		if err != nil {
 			return err
 		}
-		targetPort, err := c.portService.Get(store.Query{ID: inputPort.TargetPort.ID})
+		targetPort, err := c.portService.Get(model.Query{ID: inputPort.TargetPort.ID})
 		if err != nil {
 			return err
 		}
@@ -341,7 +340,7 @@ func (c ConfigurationManagementServer) createNetworkElements(sdnConfig *loadedSD
 			return err
 		}
 
-		networkElement, err := c.mneService.Get(store.Query{ID: uuid.MustParse(inputNetworkElement.ID)})
+		networkElement, err := c.mneService.Get(model.Query{ID: uuid.MustParse(inputNetworkElement.ID)})
 		if err != nil {
 			return err
 		}
diff --git a/controller/northbound/server/networkElement.go b/controller/northbound/server/networkElement.go
index 023f33226df93c0dce2b1857209d3789e9ccb90f..6a0a098be480e8058a82823ec262af1846252afa 100644
--- a/controller/northbound/server/networkElement.go
+++ b/controller/northbound/server/networkElement.go
@@ -99,14 +99,14 @@ func NewNetworkElementServer(
 // 	// 	}
 // 	// default:
 // 	// 	var err error
-// 	// 	sbi, err = n.sbiService.Get(store.Query{ID: sbiID})
+// 	// 	sbi, err = n.sbiService.Get(model.Query{ID: sbiID})
 // 	// 	if err != nil {
 // 	// 		return uuid.Nil, err
 // 	// 	}
 // 	// }
 
 // 	// TODO(merge): add plugin stuff here!
-// 	// sbi, err = n.sbiService.Get(store.Query{ID: sbiID})
+// 	// sbi, err = n.sbiService.Get(model.Query{ID: sbiID})
 // 	// if err != nil {
 // 	// 	return uuid.Nil, err
 // 	// }
@@ -170,7 +170,7 @@ func (n *NetworkElementServer) Get(ctx context.Context, request *mnepb.GetNetwor
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
 
-	mne, err := n.mneService.Get(store.Query{ID: uuid.MustParse(request.NetworkElementId)})
+	mne, err := n.mneService.Get(model.Query{ID: uuid.MustParse(request.NetworkElementId)})
 	if err != nil {
 		return nil, err
 	}
@@ -211,7 +211,7 @@ func (n *NetworkElementServer) Update(ctx context.Context, request *mnepb.Update
 		return nil, err
 	}
 
-	networkElement, err := n.mneService.Get(store.Query{ID: mneID})
+	networkElement, err := n.mneService.Get(model.Query{ID: mneID})
 	if err != nil {
 		return nil, err
 	}
@@ -304,7 +304,7 @@ func (n *NetworkElementServer) getMne(identifier string) (model.NetworkElement,
 		id = uuid.Nil
 	}
 
-	mne, err := n.mneService.Get(store.Query{
+	mne, err := n.mneService.Get(model.Query{
 		ID: id,
 	})
 	if mne == nil {
@@ -323,7 +323,7 @@ func (n *NetworkElementServer) getPnd(identifier string) (model.NetworkDomain, e
 		return nil, err
 	}
 
-	pnd, err := n.pndService.Get(store.Query{ID: pid})
+	pnd, err := n.pndService.Get(model.Query{ID: pid})
 	if err != nil {
 		log.Error(err)
 		return nil, status.Errorf(codes.Aborted, "%v", err)
@@ -727,7 +727,7 @@ func (n *NetworkElementServer) addMne(
 	// 	}
 	// default:
 	// 	var err error
-	// 	sbi, err = pnd.southboundService.Get(store.Query{ID: sid})
+	// 	sbi, err = pnd.southboundService.Get(model.Query{ID: sid})
 	// 	if err != nil {
 	// 		return uuid.Nil, err
 	// 	}
@@ -833,7 +833,7 @@ func (n *NetworkElementServer) Commit(u uuid.UUID) error {
 	}
 
 	// Set all the changes within the network elements model
-	networkElement, err := n.mneService.Get(store.Query{ID: ch.AssociatedDeviceID()})
+	networkElement, err := n.mneService.Get(model.Query{ID: ch.AssociatedDeviceID()})
 	if err != nil {
 		return err
 	}
@@ -910,7 +910,7 @@ func (n *NetworkElementServer) SetPathList(ctx context.Context, request *mnepb.S
 // ChangeMNE creates a change from the provided Operation, path and value.
 // The Change is Pending and times out after the specified timeout period.
 func (n *NetworkElementServer) ChangeMNE(duid uuid.UUID, operation mnepb.ApiOperation, path *gnmi.Path, value *gnmi.TypedValue) (uuid.UUID, error) {
-	mne, err := n.mneService.Get(store.Query{
+	mne, err := n.mneService.Get(model.Query{
 		ID: duid,
 	})
 	if err != nil {
@@ -981,7 +981,7 @@ func (n *NetworkElementServer) DeleteMne(ctx context.Context, request *mnepb.Del
 }
 
 func (n *NetworkElementServer) deleteMne(id uuid.UUID) error {
-	mne, err := n.mneService.Get(store.Query{
+	mne, err := n.mneService.Get(model.Query{
 		ID:   id,
 		Name: id.String(),
 	})
diff --git a/controller/northbound/server/networkElement_test.go b/controller/northbound/server/networkElement_test.go
index 85b531ccf58ed77894067362939e3a3f004e8156..e59edafb0c3c9c216b745d3ab356cd952b552116 100644
--- a/controller/northbound/server/networkElement_test.go
+++ b/controller/northbound/server/networkElement_test.go
@@ -63,7 +63,7 @@ package server
 
 // 			if tt.name != "fails wrong type" {
 // 				if err == nil {
-// 					mne, err := mneServer.mneService.Get(store.Query{Name: tt.args.name})
+// 					mne, err := mneServer.mneService.Get(model.Query{Name: tt.args.name})
 // 					if err != nil {
 // 						t.Errorf("AddNetworkElement() error = %v", err)
 // 						return
@@ -425,7 +425,7 @@ package server
 // 				return
 // 			}
 
-// 			changedMne, err := mneServer.mneService.Get(store.Query{ID: mneUUID})
+// 			changedMne, err := mneServer.mneService.Get(model.Query{ID: mneUUID})
 // 			if err != nil {
 // 				t.Errorf("NetworkElementServer.Update() error = %v", err)
 // 			}
diff --git a/controller/northbound/server/plugin.go b/controller/northbound/server/plugin.go
index 0a77cdfa038237516118a097ee9b6b93c4d09693..49fac2c63584e128012e10f125b6cc23a402ea9b 100644
--- a/controller/northbound/server/plugin.go
+++ b/controller/northbound/server/plugin.go
@@ -10,9 +10,9 @@ import (
 	pipb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-internal"
 	rpb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/plugin-registry"
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 	"code.fbi.h-da.de/danet/gosdn/controller/plugin/shared"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/bufbuild/protovalidate-go"
 	"github.com/google/uuid"
 	"github.com/prometheus/client_golang/prometheus"
@@ -65,7 +65,7 @@ func (pis *PluginInternalServer) GetPluginSchema(request *pipb.GetPluginSchemaRe
 	}
 
 	buffer := make([]byte, int(shared.MB))
-	plugin, err := pis.pluginService.Get(store.Query{ID: uuid.MustParse(request.GetPid())})
+	plugin, err := pis.pluginService.Get(model.Query{ID: uuid.MustParse(request.GetPid())})
 	if err != nil {
 		return handleRPCError(labels, err)
 	}
diff --git a/controller/northbound/server/pnd.go b/controller/northbound/server/pnd.go
index c6a9744b20d8cb15888b09b4af8b1c5a10a4f478..5f1ebd2cba7e9f73287fbeb63f66f499db0fb19d 100644
--- a/controller/northbound/server/pnd.go
+++ b/controller/northbound/server/pnd.go
@@ -10,7 +10,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/bufbuild/protovalidate-go"
 	"github.com/google/uuid"
 	"github.com/prometheus/client_golang/prometheus"
@@ -61,7 +60,7 @@ func (s PndServer) GetPnd(ctx context.Context, request *ppb.GetPndRequest) (*ppb
 		return nil, handleRPCError(labels, err)
 	}
 
-	storedPnd, err := s.pndService.Get(store.Query{ID: pndID})
+	storedPnd, err := s.pndService.Get(model.Query{ID: pndID})
 	if err != nil {
 		return nil, err
 	}
@@ -145,7 +144,7 @@ func (s PndServer) DeletePnd(ctx context.Context, request *ppb.DeletePndRequest)
 		return nil, handleRPCError(labels, err)
 	}
 
-	pnd, err := s.pndService.Get(store.Query{ID: pndID})
+	pnd, err := s.pndService.Get(model.Query{ID: pndID})
 	if err != nil {
 		return nil, handleRPCError(labels, err)
 	}
diff --git a/controller/northbound/server/role.go b/controller/northbound/server/role.go
index 1eff781de7354f34919b16cc3e73ff9a5f28ae0f..134fa30e0c7bec1e34604b4d4467be7f7791a3cc 100644
--- a/controller/northbound/server/role.go
+++ b/controller/northbound/server/role.go
@@ -8,8 +8,8 @@ import (
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/bufbuild/protovalidate-go"
 	"github.com/google/uuid"
 	"github.com/prometheus/client_golang/prometheus"
@@ -80,7 +80,7 @@ func (r RoleServer) GetRole(ctx context.Context, request *apb.GetRoleRequest) (*
 		return nil, fmt.Errorf("could not parse role uuid")
 	}
 
-	roleData, err := r.roleService.Get(store.Query{Name: request.RoleName, ID: roleID})
+	roleData, err := r.roleService.Get(model.Query{Name: request.RoleName, ID: roleID})
 	if err != nil {
 		return nil, err
 	}
@@ -146,7 +146,7 @@ func (r RoleServer) UpdateRoles(ctx context.Context, request *apb.UpdateRolesReq
 		if err != nil {
 			return nil, handleRPCError(labels, err)
 		}
-		_, err = r.roleService.Get(store.Query{ID: rid})
+		_, err = r.roleService.Get(model.Query{ID: rid})
 		if err != nil {
 			return nil, status.Errorf(codes.Canceled, "role not found %v", err)
 		}
@@ -174,7 +174,7 @@ func (r RoleServer) DeletePermissionsForRole(ctx context.Context, request *apb.D
 		return nil, status.Errorf(codes.Aborted, "%v", err)
 	}
 
-	roleToUpdate, err := r.roleService.Get(store.Query{Name: request.RoleName})
+	roleToUpdate, err := r.roleService.Get(model.Query{Name: request.RoleName})
 	if err != nil {
 		return nil, status.Errorf(codes.Canceled, "role not found %v", err)
 	}
@@ -221,7 +221,7 @@ func (r RoleServer) DeleteRoles(ctx context.Context, request *apb.DeleteRolesReq
 	}
 
 	for _, role := range request.RoleName {
-		roleToDelete, err := r.roleService.Get(store.Query{Name: role})
+		roleToDelete, err := r.roleService.Get(model.Query{Name: role})
 		if err != nil {
 			return nil, status.Errorf(codes.Canceled, "role not found")
 		}
diff --git a/controller/northbound/server/route.go b/controller/northbound/server/route.go
index 00b33e0f8733eba43b2b0026c93110ae7d03eb7c..46289a5c1c9c4cc58893d5659751af2a92fc3048 100644
--- a/controller/northbound/server/route.go
+++ b/controller/northbound/server/route.go
@@ -5,7 +5,7 @@ import (
 	"time"
 
 	topopb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/topology"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
 	routingtables "code.fbi.h-da.de/danet/gosdn/controller/topology/routing-tables"
@@ -132,7 +132,7 @@ func (t *RoutingTableServiceServer) DeleteRoute(
 		}, err
 	}
 
-	foundRoute, err := t.routeService.Get(query.Query{ID: routeID})
+	foundRoute, err := t.routeService.Get(model.Query{ID: routeID})
 	if err != nil {
 		return &topopb.DeleteRoutesResponse{
 			Timestamp: time.Now().UnixNano(),
diff --git a/controller/northbound/server/test_util_test.go b/controller/northbound/server/test_util_test.go
index 72ded5bc087c580b3829a1daff782eb86b23d2b0..77904fb615934641a9e28e64bab608ccbb34f3a7 100644
--- a/controller/northbound/server/test_util_test.go
+++ b/controller/northbound/server/test_util_test.go
@@ -11,9 +11,9 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	"github.com/sethvargo/go-password/password"
 	"golang.org/x/crypto/argon2"
@@ -181,7 +181,7 @@ func createTestUserToken(userName string, validTokenRequired bool, userService r
 	}
 
 	if validTokenRequired {
-		user, err := userService.Get(store.Query{Name: userName})
+		user, err := userService.Get(model.Query{Name: userName})
 		if err != nil {
 			return token, err
 		}
diff --git a/controller/northbound/server/topology.go b/controller/northbound/server/topology.go
index b216eb7c9b6590ad558f5ce193d3768eddb7ba11..ec8b145f03e5ff5ad694e263d9072adffe09dcc9 100644
--- a/controller/northbound/server/topology.go
+++ b/controller/northbound/server/topology.go
@@ -5,7 +5,7 @@ import (
 	"time"
 
 	topopb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/topology"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
@@ -141,7 +141,7 @@ func (t *TopologyServer) DeleteLink(ctx context.Context, request *topopb.DeleteL
 		}, err
 	}
 
-	foundLink, err := t.topologyService.Get(query.Query{ID: linkID})
+	foundLink, err := t.topologyService.Get(model.Query{ID: linkID})
 	if err != nil {
 		return &topopb.DeleteLinkResponse{
 			Timestamp: time.Now().UnixNano(),
diff --git a/controller/northbound/server/user.go b/controller/northbound/server/user.go
index 94f1b9628a217b99f988d17a0879010899ee8dc1..66864315fb68460979ef8d5dc1c9568433652c16 100644
--- a/controller/northbound/server/user.go
+++ b/controller/northbound/server/user.go
@@ -11,8 +11,8 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
 	rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
 	"code.fbi.h-da.de/danet/gosdn/controller/metrics"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/bufbuild/protovalidate-go"
 	"github.com/google/uuid"
 	"github.com/prometheus/client_golang/prometheus"
@@ -103,7 +103,7 @@ func (u UserServer) GetUser(ctx context.Context, request *apb.GetUserRequest) (*
 		return nil, fmt.Errorf("could not parse user uuid")
 	}
 
-	userData, err := u.userService.Get(store.Query{Name: request.Name, ID: userID})
+	userData, err := u.userService.Get(model.Query{Name: request.Name, ID: userID})
 	if err != nil {
 		return nil, err
 	}
@@ -174,7 +174,7 @@ func (u UserServer) UpdateUsers(ctx context.Context, request *apb.UpdateUsersReq
 			return nil, handleRPCError(labels, err)
 		}
 
-		storedUser, err := u.userService.Get(store.Query{ID: uid})
+		storedUser, err := u.userService.Get(model.Query{ID: uid})
 		if err != nil {
 			return nil, status.Errorf(codes.Canceled, "user not found %v", err)
 		}
@@ -210,7 +210,7 @@ func (u UserServer) DeleteUsers(ctx context.Context, request *apb.DeleteUsersReq
 	}
 
 	for _, user := range request.Username {
-		userToDelete, err := u.userService.Get(store.Query{Name: user})
+		userToDelete, err := u.userService.Get(model.Query{Name: user})
 		if err != nil {
 			return nil, status.Errorf(codes.Canceled, "user not found %v", err)
 		}
diff --git a/controller/nucleus/domain/application/service/genericService.go b/controller/nucleus/domain/application/service/genericService.go
index 47d5fcad329427de37541c55e1e77749d444b89d..e57450544df2696a00cb90964f8eaeadf8467726 100644
--- a/controller/nucleus/domain/application/service/genericService.go
+++ b/controller/nucleus/domain/application/service/genericService.go
@@ -1,7 +1,7 @@
 package service
 
 import (
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"github.com/google/uuid"
 )
 
@@ -58,7 +58,7 @@ func (t *GenericService[T]) Delete(item T) error {
 }
 
 // Get gets a item T.
-func (t *GenericService[T]) Get(query store.Query) (T, error) {
+func (t *GenericService[T]) Get(query model.Query) (T, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.Store[query.ID]
 	if !ok {
diff --git a/controller/nucleus/domain/application/service/networkElementService.go b/controller/nucleus/domain/application/service/networkElementService.go
index c4796771fec3d6deaaa732ce6bd1fef974af5476..64d3081074414d557ac20e687b6e421653db14a4 100644
--- a/controller/nucleus/domain/application/service/networkElementService.go
+++ b/controller/nucleus/domain/application/service/networkElementService.go
@@ -8,7 +8,6 @@ import (
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	"github.com/openconfig/gnmi/proto/gnmi"
 	"github.com/openconfig/ygot/ygot"
@@ -44,7 +43,7 @@ func NewNetworkElementService(
 }
 
 // Get takes a network element's UUID or name and returns the network element.
-func (s *NetworkElementService) Get(query store.Query) (model.NetworkElement, error) {
+func (s *NetworkElementService) Get(query model.Query) (model.NetworkElement, error) {
 	loadedNetworkElement, err := s.networkElementStore.Get(query)
 	if err != nil {
 		return nil, err
@@ -116,7 +115,7 @@ func (s *NetworkElementService) Add(networkElementToAdd model.NetworkElement) er
 
 // UpdateModel updates a existing network element with a new model provided as string.
 func (s *NetworkElementService) UpdateModel(networkElementID uuid.UUID, modelAsString string) error {
-	exisitingNetworkElement, err := s.Get(store.Query{ID: networkElementID})
+	exisitingNetworkElement, err := s.Get(model.Query{ID: networkElementID})
 	if err != nil {
 		return err
 	}
@@ -211,7 +210,7 @@ func (s *NetworkElementService) createNetworkElementFromStore(loadedNetworkEleme
 		return nil, fmt.Errorf("can not get device, no running plugin found for network element")
 	}
 
-	pluginForNetworkElement, err := s.pluginService.Get(store.Query{ID: uuid.MustParse(loadedNetworkElement.Plugin)})
+	pluginForNetworkElement, err := s.pluginService.Get(model.Query{ID: uuid.MustParse(loadedNetworkElement.Plugin)})
 	if err != nil {
 		return nil, err
 	}
diff --git a/controller/nucleus/domain/application/service/networkElementServiceMock.go b/controller/nucleus/domain/application/service/networkElementServiceMock.go
index aec91d05237d279484ca957442edefbdde0c5a78..7a803b23a7b3e3d81c6ff53e10b9da911fdce2fc 100644
--- a/controller/nucleus/domain/application/service/networkElementServiceMock.go
+++ b/controller/nucleus/domain/application/service/networkElementServiceMock.go
@@ -1,27 +1,27 @@
 package service
 
 import (
-	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 	"github.com/google/uuid"
 )
 
 // NetworkElementServiceMock provides a in-memory implementation for multiple stores.
 type NetworkElementServiceMock struct {
-	Store           map[uuid.UUID]networkelement.NetworkElement
+	Store           map[uuid.UUID]model.NetworkElement
 	nameLookupTable map[string]uuid.UUID
 }
 
 // NewNetworkElementServiceMock returns a specific in-memory store for network element service.
-func NewNetworkElementServiceMock() networkelement.Service {
+func NewNetworkElementServiceMock() ports.NetworkElementService {
 	return &NetworkElementServiceMock{
-		Store:           make(map[uuid.UUID]networkelement.NetworkElement),
+		Store:           make(map[uuid.UUID]model.NetworkElement),
 		nameLookupTable: make(map[string]uuid.UUID),
 	}
 }
 
 // Add adds a item network element.
-func (t *NetworkElementServiceMock) Add(item networkelement.NetworkElement) error {
+func (t *NetworkElementServiceMock) Add(item model.NetworkElement) error {
 	_, ok := t.Store[item.ID()]
 	if ok {
 		return nil
@@ -34,7 +34,7 @@ func (t *NetworkElementServiceMock) Add(item networkelement.NetworkElement) erro
 }
 
 // Update updates a item network element.
-func (t *NetworkElementServiceMock) Update(item networkelement.NetworkElement) error {
+func (t *NetworkElementServiceMock) Update(item model.NetworkElement) error {
 	_, ok := t.Store[item.ID()]
 	if ok {
 		return nil
@@ -52,14 +52,14 @@ func (t *NetworkElementServiceMock) UpdateModel(item uuid.UUID, model string) er
 }
 
 // Delete deletes a item network element.
-func (t *NetworkElementServiceMock) Delete(item networkelement.NetworkElement) error {
+func (t *NetworkElementServiceMock) Delete(item model.NetworkElement) error {
 	delete(t.Store, item.ID())
 
 	return nil
 }
 
 // Get gets a item network element.
-func (t *NetworkElementServiceMock) Get(query store.Query) (networkelement.NetworkElement, error) {
+func (t *NetworkElementServiceMock) Get(query model.Query) (model.NetworkElement, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.Store[query.ID]
 	if !ok {
@@ -81,8 +81,8 @@ func (t *NetworkElementServiceMock) Get(query store.Query) (networkelement.Netwo
 }
 
 // GetAll gets all items.
-func (t *NetworkElementServiceMock) GetAll() ([]networkelement.NetworkElement, error) {
-	var allItems []networkelement.NetworkElement
+func (t *NetworkElementServiceMock) GetAll() ([]model.NetworkElement, error) {
+	var allItems []model.NetworkElement
 
 	for _, item := range t.Store {
 		allItems = append(allItems, item)
@@ -92,11 +92,11 @@ func (t *NetworkElementServiceMock) GetAll() ([]networkelement.NetworkElement, e
 }
 
 // GetAllAsLoaded gets all items as `networkelement.LoadedNetworkElement`.
-func (t *NetworkElementServiceMock) GetAllAsLoaded() ([]networkelement.LoadedNetworkElement, error) {
-	var allItems []networkelement.LoadedNetworkElement
+func (t *NetworkElementServiceMock) GetAllAsLoaded() ([]model.LoadedNetworkElement, error) {
+	var allItems []model.LoadedNetworkElement
 
 	for _, item := range t.Store {
-		allItems = append(allItems, networkelement.LoadedNetworkElement{
+		allItems = append(allItems, model.LoadedNetworkElement{
 			ID:   item.ID().String(),
 			Name: item.Name(),
 		})
diff --git a/controller/nucleus/domain/application/service/networkElementService_test.go b/controller/nucleus/domain/application/service/networkElementService_test.go
index 0306b6a6e4285bcce26d0be00bfa41e8cc4571d8..50f241be329bbaba2487e68e8cc480528d739ac6 100644
--- a/controller/nucleus/domain/application/service/networkElementService_test.go
+++ b/controller/nucleus/domain/application/service/networkElementService_test.go
@@ -9,7 +9,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	"github.com/stretchr/testify/mock"
 	"google.golang.org/grpc"
@@ -68,7 +67,7 @@ func TestNetworkElementService_Get(t *testing.T) {
 
 	networkElementService, _, mockNetworkElement, _ := getNetworkElementTestStores(t, mneID)
 
-	mne, err := networkElementService.Get(store.Query{
+	mne, err := networkElementService.Get(model.Query{
 		ID:   mockNetworkElement.ID(),
 		Name: mockNetworkElement.Name(),
 	})
@@ -86,7 +85,7 @@ func TestNetworkElementService_Delete(t *testing.T) {
 
 	networkElementService, _, mockNetworkElement, _ := getNetworkElementTestStores(t, mneID)
 
-	mne, err := networkElementService.Get(store.Query{
+	mne, err := networkElementService.Get(model.Query{
 		ID:   mockNetworkElement.ID(),
 		Name: mockNetworkElement.Name(),
 	})
diff --git a/controller/nucleus/domain/application/service/pluginService.go b/controller/nucleus/domain/application/service/pluginService.go
index d1e2f082c7e154612115ad900e4648bbdbfe1d65..df2764dcd1ea7e57f8ec6fdf3d89c6a801381216 100644
--- a/controller/nucleus/domain/application/service/pluginService.go
+++ b/controller/nucleus/domain/application/service/pluginService.go
@@ -18,7 +18,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/util"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	hcplugin "github.com/hashicorp/go-plugin"
 	log "github.com/sirupsen/logrus"
@@ -55,7 +54,7 @@ func NewPluginService(
 }
 
 // Get takes a Plugin's UUID or name and returns the Plugin.
-func (s *PluginService) Get(query store.Query) (*model.Plugin, error) {
+func (s *PluginService) Get(query model.Query) (*model.Plugin, error) {
 	loadedPlugin, err := s.pluginStore.Get(query)
 	if err != nil {
 		return nil, err
diff --git a/controller/nucleus/domain/application/service/pluginServiceMock.go b/controller/nucleus/domain/application/service/pluginServiceMock.go
index 6873e65075aa1bd7a11e3b759a71d786af185c51..d95f8832168bf1f5fb5837c7254f647c2427ca21 100644
--- a/controller/nucleus/domain/application/service/pluginServiceMock.go
+++ b/controller/nucleus/domain/application/service/pluginServiceMock.go
@@ -1,25 +1,25 @@
 package service
 
 import (
-	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 	"github.com/google/uuid"
 )
 
 // PluginServiceMock provides a in-memory implementation for multiple stores.
 type PluginServiceMock struct {
-	Store map[uuid.UUID]plugin.Plugin
+	Store map[uuid.UUID]*model.Plugin
 }
 
 // NewPluginSerivceMock returns a specific in-memory store for plugin service.
-func NewPluginServiceMock() plugin.Service {
+func NewPluginServiceMock() ports.PluginService {
 	return &PluginServiceMock{
-		Store: make(map[uuid.UUID]plugin.Plugin),
+		Store: make(map[uuid.UUID]*model.Plugin),
 	}
 }
 
 // Add adds a item plugin.
-func (t *PluginServiceMock) Add(item plugin.Plugin) error {
+func (t *PluginServiceMock) Add(item *model.Plugin) error {
 	_, ok := t.Store[item.ID()]
 	if ok {
 		return nil
@@ -31,14 +31,14 @@ func (t *PluginServiceMock) Add(item plugin.Plugin) error {
 }
 
 // Delete deletes a item plugin.
-func (t *PluginServiceMock) Delete(item plugin.Plugin) error {
+func (t *PluginServiceMock) Delete(item *model.Plugin) error {
 	delete(t.Store, item.ID())
 
 	return nil
 }
 
 // Get gets a plugin.
-func (t *PluginServiceMock) Get(query store.Query) (plugin.Plugin, error) {
+func (t *PluginServiceMock) Get(query model.Query) (*model.Plugin, error) {
 	// search for direct hit on UUID.
 	item, ok := t.Store[query.ID]
 	if !ok {
@@ -49,8 +49,8 @@ func (t *PluginServiceMock) Get(query store.Query) (plugin.Plugin, error) {
 }
 
 // GetAll gets all plugins.
-func (t *PluginServiceMock) GetAll() ([]plugin.Plugin, error) {
-	var allItems []plugin.Plugin
+func (t *PluginServiceMock) GetAll() ([]*model.Plugin, error) {
+	var allItems []*model.Plugin
 
 	for _, item := range t.Store {
 		allItems = append(allItems, item)
@@ -61,6 +61,6 @@ func (t *PluginServiceMock) GetAll() ([]plugin.Plugin, error) {
 
 // RequestPlugin is a mock for requesting a plugin from the registry.
 // TODO: add plugin mock here.
-func (t *PluginServiceMock) RequestPlugin(uuid.UUID) (plugin.Plugin, error) {
+func (t *PluginServiceMock) RequestPlugin(uuid.UUID) (*model.Plugin, error) {
 	return nil, nil
 }
diff --git a/controller/nucleus/domain/application/service/pndService.go b/controller/nucleus/domain/application/service/pndService.go
index da3251f299a51b488760caa340d1957f39c9bdcb..56a7277a3ac4569d7b41c3523c9787d0aeff8502 100644
--- a/controller/nucleus/domain/application/service/pndService.go
+++ b/controller/nucleus/domain/application/service/pndService.go
@@ -3,7 +3,6 @@ package service
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 )
 
@@ -42,7 +41,7 @@ func (p *PndService) Delete(pndToDelete model.NetworkDomain) error {
 }
 
 // Get takes a PND's UUID or name and returns the PND.
-func (p *PndService) Get(query store.Query) (model.NetworkDomain, error) {
+func (p *PndService) Get(query model.Query) (model.NetworkDomain, error) {
 	loadedPnd, err := p.pndStore.Get(query)
 	if err != nil {
 		return nil, err
diff --git a/controller/nucleus/domain/model/principalNetworkDomain_test.go b/controller/nucleus/domain/model/principalNetworkDomain_test.go
index 6b9f4f5e396ccf93954599afb68588c282f7065e..e1c801dd987ceb880f01bc4e97ecd2bf76256ab3 100644
--- a/controller/nucleus/domain/model/principalNetworkDomain_test.go
+++ b/controller/nucleus/domain/model/principalNetworkDomain_test.go
@@ -122,7 +122,7 @@ package model
 
 // 			if tt.name != "fails wrong type" {
 // 				if err == nil {
-// 					mne, err := pnd.networkElementService.Get(store.Query{ID: defaultPndID})
+// 					mne, err := pnd.networkElementService.Get(model.Query{ID: defaultPndID})
 // 					if err != nil {
 // 						t.Errorf("AddNetworkElement() error = %v", err)
 // 						return
@@ -332,7 +332,7 @@ package model
 // 				t.Errorf("Request() error = %v, wantErr %v", err, tt.wantErr)
 // 			}
 
-// // 			mne, _ := pnd.networkElementService.Get(store.Query{ID: mdid})
+// // 			mne, _ := pnd.networkElementService.Get(model.Query{ID: mdid})
 // // 			if mne == nil {
 // // 				return
 // // 			}
@@ -402,7 +402,7 @@ package model
 
 // // 			_, _ = pnd.addNetworkElement(networkElementWithMockTransport)
 
-// // 			mne, _ := pnd.networkElementService.Get(store.Query{ID: mdid})
+// // 			mne, _ := pnd.networkElementService.Get(model.Query{ID: mdid})
 // // 			if mne == nil {
 // // 				return
 // // 			}
diff --git a/controller/nucleus/domain/model/query.go b/controller/nucleus/domain/model/query.go
new file mode 100644
index 0000000000000000000000000000000000000000..ee2380056ea86ae4aded347382b86e5aa5ae016d
--- /dev/null
+++ b/controller/nucleus/domain/model/query.go
@@ -0,0 +1,9 @@
+package model
+
+import "github.com/google/uuid"
+
+// Query is used to query objects from stores.
+type Query struct {
+	ID   uuid.UUID
+	Name string
+}
diff --git a/controller/interfaces/change/change.go b/controller/nucleus/domain/ports/change.go
similarity index 97%
rename from controller/interfaces/change/change.go
rename to controller/nucleus/domain/ports/change.go
index 3ec9de55589e7a450502610c2a4fa15f54f47678..53babeec3720765d556b6260bb82ac188efeceb5 100644
--- a/controller/interfaces/change/change.go
+++ b/controller/nucleus/domain/ports/change.go
@@ -1,4 +1,4 @@
-package change
+package ports
 
 import (
 	"time"
diff --git a/controller/nucleus/domain/ports/ports.go b/controller/nucleus/domain/ports/ports.go
deleted file mode 100644
index a64a8bb3382cb76f59594807557e43d1808cd12e..0000000000000000000000000000000000000000
--- a/controller/nucleus/domain/ports/ports.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package ports
-
-import (
-	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
-	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
-	"github.com/google/uuid"
-)
-
-// Store describes an interface for network element store implementations.
-type NetworkElementStore interface {
-	Add(model.NetworkElement) error
-	Update(model.NetworkElement) error
-	Delete(model.NetworkElement) error
-	Get(store.Query) (model.LoadedNetworkElement, error)
-	GetAll() ([]model.LoadedNetworkElement, error)
-}
-
-// Store describes an interface for plugin store implementations.
-type PluginStore interface {
-	Add(*model.Plugin) error
-	Update(*model.Plugin) error
-	Delete(*model.Plugin) error
-	Get(store.Query) (model.LoadedPlugin, error)
-	GetAll() ([]model.LoadedPlugin, error)
-}
-
-// PndStore describes an interface for pnd store implementations.
-type PndStore interface {
-	Add(model.NetworkDomain) error
-	Delete(model.NetworkDomain) error
-	Get(store.Query) (model.LoadedPnd, error)
-	GetAll() ([]model.LoadedPnd, error)
-	PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
-	AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
-	RemovePendingChannel(id uuid.UUID)
-}
-
-// Service describes an interface for network element service implementations.
-type NetworkElementService interface {
-	Add(model.NetworkElement) error
-	Update(model.NetworkElement) error
-	UpdateModel(uuid.UUID, string) error
-	Delete(model.NetworkElement) error
-	Get(store.Query) (model.NetworkElement, error)
-	GetAll() ([]model.NetworkElement, error)
-	GetAllAsLoaded() ([]model.LoadedNetworkElement, error)
-}
-
-// Service describes an interface for plugin service implementations.
-type PluginService interface {
-	Add(*model.Plugin) error
-	Delete(*model.Plugin) error
-	Get(store.Query) (*model.Plugin, error)
-	GetAll() ([]*model.Plugin, error)
-	RequestPlugin(uuid.UUID) (*model.Plugin, error)
-}
-
-// Service describes an interface for PND service implementation.
-type PndService interface {
-	Add(model.NetworkDomain) error
-	Delete(model.NetworkDomain) error
-	Get(store.Query) (model.NetworkDomain, error)
-	GetAll() ([]model.NetworkDomain, error)
-	// Note: Implement these in case we want to use cSBI again.
-	// PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
-	// AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
-	// RemovePendingChannel(id uuid.UUID)
-}
diff --git a/controller/nucleus/domain/ports/service.go b/controller/nucleus/domain/ports/service.go
new file mode 100644
index 0000000000000000000000000000000000000000..a06f341ec2f0b47706522e614f0051128c383020
--- /dev/null
+++ b/controller/nucleus/domain/ports/service.go
@@ -0,0 +1,38 @@
+package ports
+
+import (
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
+	"github.com/google/uuid"
+)
+
+// Service describes an interface for network element service implementations.
+type NetworkElementService interface {
+	Add(model.NetworkElement) error
+	Update(model.NetworkElement) error
+	UpdateModel(uuid.UUID, string) error
+	Delete(model.NetworkElement) error
+	Get(model.Query) (model.NetworkElement, error)
+	GetAll() ([]model.NetworkElement, error)
+	GetAllAsLoaded() ([]model.LoadedNetworkElement, error)
+}
+
+// Service describes an interface for plugin service implementations.
+type PluginService interface {
+	Add(*model.Plugin) error
+	Delete(*model.Plugin) error
+	Get(model.Query) (*model.Plugin, error)
+	GetAll() ([]*model.Plugin, error)
+	RequestPlugin(uuid.UUID) (*model.Plugin, error)
+}
+
+// Service describes an interface for PND service implementation.
+type PndService interface {
+	Add(model.NetworkDomain) error
+	Delete(model.NetworkDomain) error
+	Get(model.Query) (model.NetworkDomain, error)
+	GetAll() ([]model.NetworkDomain, error)
+	// Note: Implement these in case we want to use cSBI again.
+	// PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
+	// AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
+	// RemovePendingChannel(id uuid.UUID)
+}
diff --git a/controller/nucleus/domain/ports/store.go b/controller/nucleus/domain/ports/store.go
new file mode 100644
index 0000000000000000000000000000000000000000..f88c2a1ad136a0fe3918139ea83aec9a73a5632c
--- /dev/null
+++ b/controller/nucleus/domain/ports/store.go
@@ -0,0 +1,36 @@
+package ports
+
+import (
+	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
+	"github.com/google/uuid"
+)
+
+// Store describes an interface for network element store implementations.
+type NetworkElementStore interface {
+	Add(model.NetworkElement) error
+	Update(model.NetworkElement) error
+	Delete(model.NetworkElement) error
+	Get(model.Query) (model.LoadedNetworkElement, error)
+	GetAll() ([]model.LoadedNetworkElement, error)
+}
+
+// Store describes an interface for plugin store implementations.
+type PluginStore interface {
+	Add(*model.Plugin) error
+	Update(*model.Plugin) error
+	Delete(*model.Plugin) error
+	Get(model.Query) (model.LoadedPlugin, error)
+	GetAll() ([]model.LoadedPlugin, error)
+}
+
+// PndStore describes an interface for pnd store implementations.
+type PndStore interface {
+	Add(model.NetworkDomain) error
+	Delete(model.NetworkDomain) error
+	Get(model.Query) (model.LoadedPnd, error)
+	GetAll() ([]model.LoadedPnd, error)
+	PendingChannels(id uuid.UUID, parseErrors ...error) (chan networkelement.Details, error)
+	AddPendingChannel(id uuid.UUID, ch chan networkelement.Details)
+	RemovePendingChannel(id uuid.UUID)
+}
diff --git a/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore.go b/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore.go
index c15b40aef4e504fe1b7e79b4547effa0bbb069d0..fa1a0bf3fd0f556723b498c445a1684fcb073d27 100644
--- a/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore.go
+++ b/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore.go
@@ -60,7 +60,7 @@ func (s *FilesystemNetworkElementStore) writeAllNetworkElementsToFile(mnes []mod
 }
 
 // Get takes a network element's UUID or name and returns the network element.
-func (s *FilesystemNetworkElementStore) Get(query store.Query) (model.LoadedNetworkElement, error) {
+func (s *FilesystemNetworkElementStore) Get(query model.Query) (model.LoadedNetworkElement, error) {
 	s.fileMutex.Lock()
 	defer s.fileMutex.Unlock()
 
diff --git a/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore_test.go b/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore_test.go
index b4c630a41567727ace3849f72d7e4dd054026e9a..aec420ad1bf1865adfc24869ba85761f3c68fe2c 100644
--- a/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore_test.go
+++ b/controller/nucleus/pkg/persistence/filesystem/networkElementFilesystemStore_test.go
@@ -137,7 +137,7 @@ func TestGetNetworkElement(t *testing.T) {
 		}
 	}
 
-	returnNetworkElement, err := networkElementStore.Get(store.Query{ID: mneID2, Name: "testname2"})
+	returnNetworkElement, err := networkElementStore.Get(model.Query{ID: mneID2, Name: "testname2"})
 	if err != nil {
 		t.Error(err)
 	}
@@ -179,7 +179,7 @@ func TestUpdateNetworkElement(t *testing.T) {
 		t.Error(err)
 	}
 
-	returnNetworkElement, err := networkElementStore.Get(store.Query{ID: mneID, Name: updatedNetworkElementName})
+	returnNetworkElement, err := networkElementStore.Get(model.Query{ID: mneID, Name: updatedNetworkElementName})
 	if err != nil {
 		t.Error(err)
 	}
diff --git a/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore.go b/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore.go
index c1e74b4fe5b726d0d648d450d1b400f974cd9799..6b4fddd01c72869b3f58e569968c988a80f8e029 100644
--- a/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore.go
+++ b/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore.go
@@ -143,7 +143,7 @@ func (s *FilesystemPluginStore) Delete(pluginToDelete *model.Plugin) error {
 
 // Get takes a Plugin's UUID or name and returns the Plugin. If the requested
 // Plugin does not exist an error is returned.
-func (s *FilesystemPluginStore) Get(query store.Query) (model.LoadedPlugin, error) {
+func (s *FilesystemPluginStore) Get(query model.Query) (model.LoadedPlugin, error) {
 	s.fileMutex.Lock()
 	defer s.fileMutex.Unlock()
 
diff --git a/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore_test.go b/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore_test.go
index ac2881c804720a224fb35514c882b38612e089a9..f7ff8c4b660c91886cb89884edfb4b58d9a34496 100644
--- a/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore_test.go
+++ b/controller/nucleus/pkg/persistence/filesystem/pluginFilesystemStore_test.go
@@ -5,6 +5,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
 	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 )
@@ -98,7 +99,7 @@ func TestGetPlugin(t *testing.T) {
 		}
 	}
 
-	returnPlugin, err := pluginStore.Get(store.Query{ID: mockPlugin2ID, Name: ""})
+	returnPlugin, err := pluginStore.Get(model.Query{ID: mockPlugin2ID, Name: ""})
 	if err != nil {
 		t.Error(err)
 	}
diff --git a/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore.go b/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore.go
index eca2a0a91ede2309a9ee20149839868da3e1ee82..634be0fb38d4990846a141223dada27d09a10bb8 100644
--- a/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore.go
+++ b/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore.go
@@ -141,7 +141,7 @@ func (t *FilesystemPndStore) Delete(pndToDelete model.NetworkDomain) error {
 }
 
 // Get provides a the query interface to find a stored pnd.
-func (t *FilesystemPndStore) Get(query store.Query) (model.LoadedPnd, error) {
+func (t *FilesystemPndStore) Get(query model.Query) (model.LoadedPnd, error) {
 	t.fileMutex.Lock()
 	defer t.fileMutex.Unlock()
 
diff --git a/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore_test.go b/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore_test.go
index 01e6aff9b40c546773d8e13779e6d82b237a5262..86e172597d05cdad33cb3568042025b5caed14a1 100644
--- a/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore_test.go
+++ b/controller/nucleus/pkg/persistence/filesystem/pndFilesystemStore_test.go
@@ -12,7 +12,7 @@ import (
 func TestAddPnd(t *testing.T) {
 	defer ensureStoreFileForTestsIsRemoved(store.PndFilename)
 
-	pluginServiceMock := NewPluginServiceMock()
+	pluginServiceMock := NewPluginServiceMock()ex
 	pndStore := NewPndStore(pluginServiceMock)
 
 	pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
@@ -81,7 +81,7 @@ func TestGetPnd(t *testing.T) {
 		}
 	}
 
-	returnPnd, err := pndStore.Get(store.Query{ID: pndID2, Name: ""})
+	returnPnd, err := pndStore.Get(model.Query{ID: pndID2, Name: ""})
 	if err != nil {
 		t.Error(err)
 	}
diff --git a/controller/nucleus/pkg/persistence/memory/memoryNetworkElementStore.go b/controller/nucleus/pkg/persistence/memory/memoryNetworkElementStore.go
index 1144dc9baa9df9883397edad024fa4dd65851fc7..9a5bf744ef87c2c0b3c57fd6753362b655b400ef 100644
--- a/controller/nucleus/pkg/persistence/memory/memoryNetworkElementStore.go
+++ b/controller/nucleus/pkg/persistence/memory/memoryNetworkElementStore.go
@@ -6,7 +6,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 )
 
 // MemoryNetworkElementStore provides a in-memory implementation for network elements.
@@ -79,7 +78,7 @@ func (t *MemoryNetworkElementStore) Delete(item model.NetworkElement) error {
 }
 
 // Get takes a network element's UUID or name and returns the network element.
-func (t *MemoryNetworkElementStore) Get(query store.Query) (model.LoadedNetworkElement, error) {
+func (t *MemoryNetworkElementStore) Get(query model.Query) (model.LoadedNetworkElement, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.Store[query.ID.String()]
 	if !ok {
diff --git a/controller/nucleus/pkg/persistence/memory/memoryPluginStore.go b/controller/nucleus/pkg/persistence/memory/memoryPluginStore.go
index 1a346aec0752d41fa54299e78a5224037ead29c8..7e372322e2c3371d46efec9f4fa3180750c4abf3 100644
--- a/controller/nucleus/pkg/persistence/memory/memoryPluginStore.go
+++ b/controller/nucleus/pkg/persistence/memory/memoryPluginStore.go
@@ -5,6 +5,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 )
 
@@ -72,7 +73,7 @@ func (t *MemoryPluginStore) Delete(item plugin.Plugin) error {
 }
 
 // Get takes a plugins's UUID or name and returns the plugin.
-func (t *MemoryPluginStore) Get(query store.Query) (plugin.LoadedPlugin, error) {
+func (t *MemoryPluginStore) Get(query model.Query) (plugin.LoadedPlugin, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.Store[query.ID.String()]
 	if !ok {
diff --git a/controller/nucleus/pkg/persistence/memory/memoryPndStore.go b/controller/nucleus/pkg/persistence/memory/memoryPndStore.go
index f63abc7a3d11c69e945e8f650ab1ada28295aaef..5d69f3db5f5a5c081aa20e77362017d4baf9a000 100644
--- a/controller/nucleus/pkg/persistence/memory/memoryPndStore.go
+++ b/controller/nucleus/pkg/persistence/memory/memoryPndStore.go
@@ -7,7 +7,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 )
 
@@ -57,7 +56,7 @@ func (t *MemoryPndStore) Delete(item model.NetworkDomain) error {
 }
 
 // Get provides a the query interface to find a stored pnd.
-func (t *MemoryPndStore) Get(query store.Query) (model.LoadedPnd, error) {
+func (t *MemoryPndStore) Get(query model.Query) (model.LoadedPnd, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.Store[query.ID]
 	if !ok {
diff --git a/controller/nucleus/pkg/persistence/mongodb/databaseNetworkElementStore.go b/controller/nucleus/pkg/persistence/mongodb/databaseNetworkElementStore.go
index dd62e53e8b861d5421bc24b72c17a7015dbe4013..b26aa53b1ffc2f0064697cc0fef5143341605e6d 100644
--- a/controller/nucleus/pkg/persistence/mongodb/databaseNetworkElementStore.go
+++ b/controller/nucleus/pkg/persistence/mongodb/databaseNetworkElementStore.go
@@ -6,7 +6,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
@@ -31,7 +30,7 @@ func NewDatabaseNetworkElementStore() ports.NetworkElementStore {
 }
 
 // Get takes a NetworkElement's UUID or name and returns the NetworkElement.
-func (s *DatabaseNetworkElementStore) Get(query store.Query) (model.LoadedNetworkElement, error) {
+func (s *DatabaseNetworkElementStore) Get(query model.Query) (model.LoadedNetworkElement, error) {
 	var loadedNetworkElement model.LoadedNetworkElement
 
 	if query.ID.String() != "" {
diff --git a/controller/nucleus/pkg/persistence/mongodb/databasePluginStore.go b/controller/nucleus/pkg/persistence/mongodb/databasePluginStore.go
index 19f9cd5fa876d409467cbf2ca3265e32fa459e36..9c1afe47087fdedd99d5282c5de48a9120fef688 100644
--- a/controller/nucleus/pkg/persistence/mongodb/databasePluginStore.go
+++ b/controller/nucleus/pkg/persistence/mongodb/databasePluginStore.go
@@ -110,7 +110,7 @@ func (s *DatabasePluginStore) Delete(pluginToDelete *model.Plugin) (err error) {
 
 // Get takes a SouthboundInterface's UUID or name and returns the SouthboundInterface. If the requested
 // SouthboundInterface does not exist an error is returned.
-func (s *DatabasePluginStore) Get(query store.Query) (loadedPlugin model.LoadedPlugin, err error) {
+func (s *DatabasePluginStore) Get(query model.Query) (loadedPlugin model.LoadedPlugin, err error) {
 	client, ctx, cancel := GetMongoConnection()
 	defer cancel()
 	defer func() {
diff --git a/controller/nucleus/pkg/persistence/mongodb/databasePndStore.go b/controller/nucleus/pkg/persistence/mongodb/databasePndStore.go
index 5b82e904935b9dbe3505e7268f0d4021a8946fb3..e1e8cbffc710204d86ee4b4fdb1a4c8367c40552 100644
--- a/controller/nucleus/pkg/persistence/mongodb/databasePndStore.go
+++ b/controller/nucleus/pkg/persistence/mongodb/databasePndStore.go
@@ -8,7 +8,6 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 	"go.mongodb.org/mongo-driver/bson"
@@ -24,7 +23,7 @@ type DatabasePndStore struct {
 
 // Get takes a PrincipalNetworkDomain's UUID or name and returns the PrincipalNetworkDomain. If the requested
 // PrincipalNetworkDomain does not exist an error is returned.
-func (s *DatabasePndStore) Get(query store.Query) (newPnd model.LoadedPnd, err error) {
+func (s *DatabasePndStore) Get(query model.Query) (newPnd model.LoadedPnd, err error) {
 	var loadedPND model.LoadedPnd
 
 	if query.ID != uuid.Nil {
diff --git a/controller/rbac/databaseRoleStore.go b/controller/rbac/databaseRoleStore.go
index e263690f8855a90176b25141a342ecadf1915bef..bf45a8d0c624b2bd562545389f39cc848adb698a 100644
--- a/controller/rbac/databaseRoleStore.go
+++ b/controller/rbac/databaseRoleStore.go
@@ -5,8 +5,8 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 	"go.mongodb.org/mongo-driver/bson"
@@ -68,7 +68,7 @@ func (s *DatabaseRoleStore) Delete(roleToDelete rbac.Role) (err error) {
 
 // Get takes a Roles's UUID or name and returns the Role. If the requested
 // Role does not exist an error is returned.
-func (s *DatabaseRoleStore) Get(query store.Query) (rbac.LoadedRole, error) {
+func (s *DatabaseRoleStore) Get(query model.Query) (rbac.LoadedRole, error) {
 	var loadedRole rbac.LoadedRole
 
 	if query.ID != uuid.Nil {
diff --git a/controller/rbac/databaseUserStore.go b/controller/rbac/databaseUserStore.go
index 0788697f67a0553d571af3780e8a06c1429db880..bf1a9e18a3091320b02bceca5185f467a1973f78 100644
--- a/controller/rbac/databaseUserStore.go
+++ b/controller/rbac/databaseUserStore.go
@@ -5,8 +5,8 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 	"go.mongodb.org/mongo-driver/bson"
@@ -69,7 +69,7 @@ func (s *DatabaseUserStore) Delete(userToDelete rbac.User) (err error) {
 
 // Get takes a User's UUID or name and returns the User. If the requested
 // User does not exist an error is returned.
-func (s *DatabaseUserStore) Get(query store.Query) (rbac.LoadedUser, error) {
+func (s *DatabaseUserStore) Get(query model.Query) (rbac.LoadedUser, error) {
 	var loadedUser rbac.LoadedUser
 
 	if query.ID != uuid.Nil {
diff --git a/controller/rbac/memoryRoleStore.go b/controller/rbac/memoryRoleStore.go
index 86c6ee25f44ae67d876b00c656b33830127d85d2..f4b9312e14d1c36876e259cc544dea0b34db91f9 100644
--- a/controller/rbac/memoryRoleStore.go
+++ b/controller/rbac/memoryRoleStore.go
@@ -5,7 +5,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 )
 
 // MemoryRoleStore provides a in-memory implementation for roles.
@@ -77,7 +77,7 @@ func (s *MemoryRoleStore) Update(item rbac.Role) error {
 }
 
 // Get takes a role's UUID or name and returns the role.
-func (s *MemoryRoleStore) Get(query store.Query) (rbac.LoadedRole, error) {
+func (s *MemoryRoleStore) Get(query model.Query) (rbac.LoadedRole, error) {
 	// First search for direct hit on UUID.
 	item, ok := s.Store[query.ID.String()]
 	if !ok {
diff --git a/controller/rbac/memoryUserStore.go b/controller/rbac/memoryUserStore.go
index b9bab5832703788b0dbbef0b13452d586d4d7dfc..52d33ae86ae017c4d3be524e20315186ff55a3dc 100644
--- a/controller/rbac/memoryUserStore.go
+++ b/controller/rbac/memoryUserStore.go
@@ -5,7 +5,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 )
 
 // MemoryUserStore provides a in-memory implementation for users.
@@ -77,7 +77,7 @@ func (s *MemoryUserStore) Update(item rbac.User) error {
 }
 
 // Get takes a user's UUID or name and returns the user.
-func (s *MemoryUserStore) Get(query store.Query) (rbac.LoadedUser, error) {
+func (s *MemoryUserStore) Get(query model.Query) (rbac.LoadedUser, error) {
 	// First search for direct hit on UUID.
 	item, ok := s.Store[query.ID.String()]
 	if !ok {
diff --git a/controller/rbac/rbacService.go b/controller/rbac/rbacService.go
index 0a1d26a478b030824173a2e1d70589c6248ee308..816ff2210c69e6d11344539081f2b0728a5dcd2e 100644
--- a/controller/rbac/rbacService.go
+++ b/controller/rbac/rbacService.go
@@ -3,7 +3,7 @@ package rbac
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/event"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
-	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"github.com/google/uuid"
 
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
@@ -100,7 +100,7 @@ func (s *UserService) Update(userToUpdate rbac.User) error {
 }
 
 // Get takes a user's UUID or name and returns the user.
-func (s *UserService) Get(query store.Query) (rbac.User, error) {
+func (s *UserService) Get(query model.Query) (rbac.User, error) {
 	loadedUser, err := s.userStore.Get(query)
 	if err != nil {
 		return nil, err
@@ -209,7 +209,7 @@ func (s *RoleService) Update(roleToUpdate rbac.Role) error {
 }
 
 // Get takes a roles's UUID or name and returns the role.
-func (s *RoleService) Get(query store.Query) (rbac.Role, error) {
+func (s *RoleService) Get(query model.Query) (rbac.Role, error) {
 	loadedRole, err := s.roleStore.Get(query)
 	if err != nil {
 		return nil, err
diff --git a/controller/rbac/roleFileSystemStore.go b/controller/rbac/roleFileSystemStore.go
index c0780d9505baf0ea4cfef2e5dbea2a44739789aa..5850e023af259bcf6ac1638ae8a4f6c6117ef247 100644
--- a/controller/rbac/roleFileSystemStore.go
+++ b/controller/rbac/roleFileSystemStore.go
@@ -7,6 +7,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	log "github.com/sirupsen/logrus"
 )
@@ -113,7 +114,7 @@ func (s *FileSystemRoleStore) Delete(roleToDelete rbac.Role) error {
 }
 
 // Get takes a Roles ID and return the Role if found.
-func (s *FileSystemRoleStore) Get(query store.Query) (rbac.LoadedRole, error) {
+func (s *FileSystemRoleStore) Get(query model.Query) (rbac.LoadedRole, error) {
 	s.fileMutex.Lock()
 	defer s.fileMutex.Unlock()
 
diff --git a/controller/rbac/roleFileSystemStore_test.go b/controller/rbac/roleFileSystemStore_test.go
index 347b428534d178e91d517307d5bffd45c2003a7c..0906f1e6b17a5fd117ec19f360d991204eded012 100644
--- a/controller/rbac/roleFileSystemStore_test.go
+++ b/controller/rbac/roleFileSystemStore_test.go
@@ -5,6 +5,7 @@ import (
 	"testing"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 )
@@ -67,7 +68,7 @@ func TestFileSystemRoleStore_Get(t *testing.T) {
 	defer ensureStoreFileForTestsIsRemoved(store.RoleFilename)
 
 	type args struct {
-		query store.Query
+		query model.Query
 	}
 	var idtest uuid.UUID
 	var arrTest []string
@@ -79,7 +80,7 @@ func TestFileSystemRoleStore_Get(t *testing.T) {
 		wantErr bool
 	}{
 		{"AddRole1", args{
-			store.Query{
+			model.Query{
 				ID: idtest, Name: "test",
 			},
 		},
diff --git a/controller/rbac/userFileSystemStore.go b/controller/rbac/userFileSystemStore.go
index 257fb5e111b897ddb67c3cf4832af9e2bc36f258..2bd90fd7aaf1357c42f794f9411fa0b0b6a00f67 100644
--- a/controller/rbac/userFileSystemStore.go
+++ b/controller/rbac/userFileSystemStore.go
@@ -7,6 +7,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	log "github.com/sirupsen/logrus"
 )
@@ -113,7 +114,7 @@ func (s *FileSystemUserStore) Delete(userToDelete rbac.User) error {
 }
 
 // Get takes a Users ID and return the User if found.
-func (s *FileSystemUserStore) Get(query store.Query) (rbac.LoadedUser, error) {
+func (s *FileSystemUserStore) Get(query model.Query) (rbac.LoadedUser, error) {
 	s.fileMutex.Lock()
 	defer s.fileMutex.Unlock()
 
diff --git a/controller/rbac/userFileSystemStore_test.go b/controller/rbac/userFileSystemStore_test.go
index 847d2be830b558624871a00c75c5496fe9eab324..b7a1c6d71d238d67b8c98475b65f05e9afd16d6e 100644
--- a/controller/rbac/userFileSystemStore_test.go
+++ b/controller/rbac/userFileSystemStore_test.go
@@ -6,6 +6,7 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/store"
 	"github.com/google/uuid"
 )
@@ -78,7 +79,7 @@ func TestFileSystemUserStore_Get(t *testing.T) {
 	defer ensureStoreFileForTestsIsRemoved(store.UserFilename)
 
 	type args struct {
-		query store.Query
+		query model.Query
 	}
 	var idtest uuid.UUID
 	var role map[string]string
@@ -92,7 +93,7 @@ func TestFileSystemUserStore_Get(t *testing.T) {
 		{
 			"testUser",
 			args{
-				store.Query{ID: idtest, Name: "test"},
+				model.Query{ID: idtest, Name: "test"},
 			},
 			rbac.LoadedUser{ID: idtest.String(), UserName: "", Roles: role, Password: "xyz", Token: "svsvsfbdwbwbev", Salt: "svswvasfbw"},
 			false,
diff --git a/controller/store/changeStores.go b/controller/store/changeStores.go
index 06db18452024e3dfd9b59e68732285a6d9897786..e6b55150bef486a00ea7b16785b87e3bfd778b1f 100644
--- a/controller/store/changeStores.go
+++ b/controller/store/changeStores.go
@@ -2,7 +2,7 @@ package store
 
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
-	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/change"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/ports"
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 
@@ -21,16 +21,16 @@ func NewChangeStore() *ChangeStore {
 
 // GetChange takes a Change's UUID and returns the Change. If the requested
 // Change does not exist an error is returned.
-func (s *ChangeStore) GetChange(id uuid.UUID) (change.Change, error) {
+func (s *ChangeStore) GetChange(id uuid.UUID) (ports.Change, error) {
 	item, err := s.genericStore.Get(id)
 	if err != nil {
 		return nil, err
 	}
-	c, ok := item.(change.Change)
+	c, ok := item.(ports.Change)
 	if !ok {
 		return nil, &customerrs.InvalidTypeAssertionError{
 			Value: c,
-			Type:  (*change.Change)(nil),
+			Type:  (*ports.Change)(nil),
 		}
 	}
 	log.WithFields(log.Fields{
@@ -58,7 +58,7 @@ func filterChanges(store *ChangeStore, state mnepb.ChangeState) []uuid.UUID {
 	changes := make([]uuid.UUID, 0)
 	for _, ch := range store.Store {
 		switch c := ch.(type) {
-		case change.Change:
+		case ports.Change:
 			if c.State() == state {
 				changes = append(changes, c.ID())
 			}
diff --git a/controller/topology/nodes/nodeService.go b/controller/topology/nodes/nodeService.go
index 518626c15e1f524fe375661acb256baa129a41d7..97170576d5bf60058df39b714a699aec094bb3b9 100644
--- a/controller/topology/nodes/nodeService.go
+++ b/controller/topology/nodes/nodeService.go
@@ -3,7 +3,7 @@ package nodes
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/event"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
@@ -19,7 +19,7 @@ type Service interface {
 	EnsureExists(Node) (Node, error)
 	Update(Node) error
 	Delete(Node) error
-	Get(query.Query) (Node, error)
+	Get(model.Query) (Node, error)
 	GetAll() ([]Node, error)
 }
 
@@ -45,7 +45,7 @@ func (n *NodeService) EnsureExists(node Node) (Node, error) {
 	}
 
 	// Check if node with vaild UUID exists
-	existingNode, err := n.Get(query.Query{ID: node.ID})
+	existingNode, err := n.Get(model.Query{ID: node.ID})
 	if err != nil {
 		// Create new node with that UUID
 		return n.createNode(node)
@@ -120,7 +120,7 @@ func (n *NodeService) Delete(node Node) error {
 }
 
 // Get gets a node.
-func (n *NodeService) Get(query query.Query) (Node, error) {
+func (n *NodeService) Get(query model.Query) (Node, error) {
 	node, err := n.store.Get(query)
 	if err != nil {
 		return node, err
diff --git a/controller/topology/nodes/nodeService_test.go b/controller/topology/nodes/nodeService_test.go
index 3eca6b3684c55db9c0ec42e20b3c80a2768fff65..95e215f0447f57650d4baa22252be496ab7eb19c 100644
--- a/controller/topology/nodes/nodeService_test.go
+++ b/controller/topology/nodes/nodeService_test.go
@@ -7,7 +7,7 @@ import (
 	"code.fbi.h-da.de/danet/gosdn/controller/conflict"
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/store"
 
 	"github.com/google/uuid"
@@ -167,7 +167,7 @@ func TestNodeService_Update(t *testing.T) {
 				t.Errorf("NodeService.Update() error = %v, wantErr %v", err, tt.wantErr)
 			}
 
-			updatedNode, err := p.Get(query.Query{ID: tt.args.node.ID, Name: tt.args.node.Name})
+			updatedNode, err := p.Get(model.Query{ID: tt.args.node.ID, Name: tt.args.node.Name})
 			if err != nil {
 				t.Errorf("NodeService.Get() failed %v", err)
 			}
@@ -235,7 +235,7 @@ func TestNodeService_Get(t *testing.T) {
 		eventService event.Service
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -251,7 +251,7 @@ func TestNodeService_Get(t *testing.T) {
 				eventService: eventservice.NewMockEventService(),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestNode().ID,
 					Name: getTestNode().Name,
 				},
@@ -266,7 +266,7 @@ func TestNodeService_Get(t *testing.T) {
 				eventService: eventservice.NewMockEventService(),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestNode().ID,
 					Name: getTestNode().Name,
 				},
diff --git a/controller/topology/nodes/nodeStore.go b/controller/topology/nodes/nodeStore.go
index 7f53f179282b0969a5025e56e8faff0e1820cf52..d0292386749aae6611d0c7b2e434b6205a2d1ff6 100644
--- a/controller/topology/nodes/nodeStore.go
+++ b/controller/topology/nodes/nodeStore.go
@@ -5,8 +5,8 @@ import (
 	"time"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"github.com/google/uuid"
 	"go.mongodb.org/mongo-driver/bson"
@@ -21,7 +21,7 @@ type Store interface {
 	Add(Node) error
 	Update(Node) error
 	Delete(Node) error
-	Get(query.Query) (Node, error)
+	Get(model.Query) (Node, error)
 	GetAll() ([]Node, error)
 }
 
@@ -38,7 +38,7 @@ func NewDatabaseNodeStore() Store {
 }
 
 // Get takes a nodes's UUID or name and returns the nodes.
-func (s *DatabaseNodeStore) Get(query query.Query) (Node, error) {
+func (s *DatabaseNodeStore) Get(query model.Query) (Node, error) {
 	var loadedNode Node
 
 	if query.ID.String() != "" {
diff --git a/controller/topology/ports/portService.go b/controller/topology/ports/portService.go
index 25bfc09c6631dcb936449982a20322e266681b17..f37f0e852ddb26ac3ef5e2be4b0367de06852306 100644
--- a/controller/topology/ports/portService.go
+++ b/controller/topology/ports/portService.go
@@ -3,7 +3,7 @@ package ports
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/event"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 
 	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
@@ -19,7 +19,7 @@ type Service interface {
 	EnsureExists(Port) (Port, error)
 	Update(Port) error
 	Delete(Port) error
-	Get(query.Query) (Port, error)
+	Get(model.Query) (Port, error)
 	GetAll() ([]Port, error)
 }
 
@@ -44,7 +44,7 @@ func (p *PortService) EnsureExists(port Port) (Port, error) {
 		return p.createPort(port)
 	}
 
-	existingPort, err := p.Get(query.Query{ID: port.ID})
+	existingPort, err := p.Get(model.Query{ID: port.ID})
 	if err != nil {
 		return p.createPort(port)
 	}
@@ -118,7 +118,7 @@ func (p *PortService) Delete(port Port) error {
 }
 
 // Get gets a port.
-func (p *PortService) Get(query query.Query) (Port, error) {
+func (p *PortService) Get(query model.Query) (Port, error) {
 	port, err := p.store.Get(query)
 	if err != nil {
 		return port, err
diff --git a/controller/topology/ports/portService_test.go b/controller/topology/ports/portService_test.go
index 951f2730ee43a6f8e5ab9180bb43c8dbab28f425..e9c56e6b20406bc3bdcbc8652047ed697c8c82b0 100644
--- a/controller/topology/ports/portService_test.go
+++ b/controller/topology/ports/portService_test.go
@@ -6,7 +6,7 @@ import (
 
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/store"
 
 	"github.com/google/uuid"
@@ -163,7 +163,7 @@ func TestPortService_Update(t *testing.T) {
 				t.Errorf("PortService.Update() error = %v, wantErr %v", err, tt.wantErr)
 			}
 
-			updatedPort, err := p.Get(query.Query{ID: tt.args.port.ID})
+			updatedPort, err := p.Get(model.Query{ID: tt.args.port.ID})
 			if err != nil {
 				t.Errorf("PortService.Get() failed %v", err)
 			}
@@ -230,7 +230,7 @@ func TestPortService_Get(t *testing.T) {
 		eventService eventInterfaces.Service
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -245,7 +245,7 @@ func TestPortService_Get(t *testing.T) {
 				store: store.NewGenericStore[Port](),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestPort().ID,
 					Name: getTestPort().Name,
 				},
@@ -260,7 +260,7 @@ func TestPortService_Get(t *testing.T) {
 				eventService: eventservice.NewMockEventService(),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestPort().ID,
 					Name: getTestPort().Name,
 				},
diff --git a/controller/topology/ports/portStore.go b/controller/topology/ports/portStore.go
index cadda73fce3f2e4127db7e983803ae2583831ca6..5990f300c086a0f706bff29a49c07c94e81976c2 100644
--- a/controller/topology/ports/portStore.go
+++ b/controller/topology/ports/portStore.go
@@ -5,8 +5,8 @@ import (
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"github.com/google/uuid"
 	"go.mongodb.org/mongo-driver/bson"
@@ -19,7 +19,7 @@ type Store interface {
 	Add(Port) error
 	Update(Port) error
 	Delete(Port) error
-	Get(query.Query) (Port, error)
+	Get(model.Query) (Port, error)
 	GetAll() ([]Port, error)
 }
 
@@ -36,7 +36,7 @@ func NewDatabasePortStore() Store {
 }
 
 // Get takes a Ports's UUID or name and returns the port.
-func (s *DatabasePortStore) Get(query query.Query) (Port, error) {
+func (s *DatabasePortStore) Get(query model.Query) (Port, error) {
 	var loadedPort Port
 
 	if query.ID.String() != "" {
diff --git a/controller/topology/routing-tables/routingTableService.go b/controller/topology/routing-tables/routingTableService.go
index 2a1fc1348b56545cce10c527959fcb670c38a656..beddd9229c8ef921dc0ac97bc6925ce0aadf743b 100644
--- a/controller/topology/routing-tables/routingTableService.go
+++ b/controller/topology/routing-tables/routingTableService.go
@@ -3,7 +3,7 @@ package routingtables
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/event"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
 	"github.com/google/uuid"
@@ -20,7 +20,7 @@ type Service interface {
 	EnsureExists(RoutingTable) (RoutingTable, error)
 	Update(RoutingTable) error
 	Delete(RoutingTable) error
-	Get(query.Query) (RoutingTable, error)
+	Get(model.Query) (RoutingTable, error)
 	GetAll() ([]RoutingTable, error)
 }
 
@@ -54,7 +54,7 @@ func (r *RoutingTableService) EnsureExists(routingTable RoutingTable) (RoutingTa
 		return r.createRoutingTable(routingTable)
 	}
 
-	existingRoutingTable, err := r.Get(query.Query{ID: routingTable.ID})
+	existingRoutingTable, err := r.Get(model.Query{ID: routingTable.ID})
 	if err != nil {
 		return r.createRoutingTable(routingTable)
 	}
@@ -128,7 +128,7 @@ func (r *RoutingTableService) Delete(routingTable RoutingTable) error {
 }
 
 // Get gets a routingTable.
-func (r *RoutingTableService) Get(query query.Query) (RoutingTable, error) {
+func (r *RoutingTableService) Get(query model.Query) (RoutingTable, error) {
 	routingTable, err := r.store.Get(query)
 	if err != nil {
 		return routingTable, err
diff --git a/controller/topology/routing-tables/routingTableService_test.go b/controller/topology/routing-tables/routingTableService_test.go
index 432f967e96cc845c9afbfd4ac9d2404895ca3836..bebf07bca34b98d44560f56faa83836ec5dd3eea 100644
--- a/controller/topology/routing-tables/routingTableService_test.go
+++ b/controller/topology/routing-tables/routingTableService_test.go
@@ -6,7 +6,7 @@ import (
 
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/store"
@@ -324,7 +324,7 @@ func TestRoutingTableService_Get(t *testing.T) {
 		portService ports.Service
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -341,7 +341,7 @@ func TestRoutingTableService_Get(t *testing.T) {
 				portService: ports.NewPortService(getTestStoreWithPorts(t, []ports.Port{}), eventservice.NewMockEventService()),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID: getTestRoutingTable().ID,
 				},
 			},
@@ -354,7 +354,7 @@ func TestRoutingTableService_Get(t *testing.T) {
 				store: getTestStoreWithRoutingTables(t, []RoutingTable{getTestRoutingTable()}),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID: getTestRoutingTable().ID,
 				},
 			},
diff --git a/controller/topology/routing-tables/routingTableStore.go b/controller/topology/routing-tables/routingTableStore.go
index ca80c52d0d181c7b662cf5f6ecc1684b304e91d5..3cefb0ea6d0b89916233de587039d269d3a9f530 100644
--- a/controller/topology/routing-tables/routingTableStore.go
+++ b/controller/topology/routing-tables/routingTableStore.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 
 	"github.com/google/uuid"
 	"go.mongodb.org/mongo-driver/bson"
@@ -18,7 +18,7 @@ type Store interface {
 	Add(RoutingTable) error
 	Update(RoutingTable) error
 	Delete(RoutingTable) error
-	Get(query.Query) (RoutingTable, error)
+	Get(model.Query) (RoutingTable, error)
 	GetAll() ([]RoutingTable, error)
 }
 
@@ -35,7 +35,7 @@ func NewDatabaseRoutingTableStore() Store {
 }
 
 // Get takes a routing-tables's UUID or name and returns the entries.
-func (s *DatabaseRoutingTableStore) Get(query query.Query) (RoutingTable, error) {
+func (s *DatabaseRoutingTableStore) Get(query model.Query) (RoutingTable, error) {
 	var loadedRoutingTable RoutingTable
 
 	if query.ID.String() != "" {
diff --git a/controller/topology/store/genericStore.go b/controller/topology/store/genericStore.go
index 557426c307b7dcd1a83e0ed8480e82233f5a9963..2f7caf1b4efcbd636b2e1fea4679a47dc3a1f7a3 100644
--- a/controller/topology/store/genericStore.go
+++ b/controller/topology/store/genericStore.go
@@ -3,9 +3,8 @@ package store
 import (
 	"errors"
 
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"github.com/google/uuid"
-
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 )
 
 type storableConstraint interface {
@@ -57,7 +56,7 @@ func (t *GenericStore[T]) Delete(item T) error {
 	return nil
 }
 
-func (t *GenericStore[T]) Get(query query.Query) (T, error) {
+func (t *GenericStore[T]) Get(query model.Query) (T, error) {
 	// First search for direct hit on UUID.
 	item, ok := t.store[query.ID]
 	if !ok {
diff --git a/controller/topology/store/genericStore_test.go b/controller/topology/store/genericStore_test.go
index b8828653077d6527dc6c809e400404feb7d586d1..3024dcaef6134566d786fb406b64d1c4a29de804 100644
--- a/controller/topology/store/genericStore_test.go
+++ b/controller/topology/store/genericStore_test.go
@@ -4,9 +4,8 @@ import (
 	"reflect"
 	"testing"
 
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"github.com/google/uuid"
-
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 )
 
 type testItem struct {
@@ -51,7 +50,7 @@ func TestGenericStore_Get(t *testing.T) {
 		items []testItem
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -66,7 +65,7 @@ func TestGenericStore_Get(t *testing.T) {
 				items: []testItem{},
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID: getTestItem().ID,
 				},
 			},
@@ -79,7 +78,7 @@ func TestGenericStore_Get(t *testing.T) {
 				items: []testItem{getTestItem()},
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID: getTestItem().ID,
 				},
 			},
@@ -116,7 +115,7 @@ func TestGenericStore_GetAll(t *testing.T) {
 		items []testItem
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -131,7 +130,7 @@ func TestGenericStore_GetAll(t *testing.T) {
 				items: []testItem{getTestItem()},
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID: getTestItem().ID,
 				},
 			},
diff --git a/controller/topology/topologyService.go b/controller/topology/topologyService.go
index f7934bf6c20332aaa64e24651fae1ca9102d1d5f..129ae048c413dcb3717784895dcac535d3dfa5ad 100644
--- a/controller/topology/topologyService.go
+++ b/controller/topology/topologyService.go
@@ -3,7 +3,7 @@ package topology
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/event"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
@@ -20,7 +20,7 @@ type Service interface {
 	AddLink(links.Link) error
 	UpdateLink(links.Link) error
 	DeleteLink(links.Link) error
-	Get(query.Query) (links.Link, error)
+	Get(model.Query) (links.Link, error)
 	GetAll() ([]links.Link, error)
 }
 
@@ -145,7 +145,7 @@ func (t *TopoService) GetAll() ([]links.Link, error) {
 }
 
 // Get returns the current topology.
-func (t *TopoService) Get(query query.Query) (links.Link, error) {
+func (t *TopoService) Get(query model.Query) (links.Link, error) {
 	link, err := t.store.Get(query)
 	if err != nil {
 		return link, err
diff --git a/controller/topology/topologyService_test.go b/controller/topology/topologyService_test.go
index e28df6d9e6990c63528bbd7130c5ea5e0d7f1c98..fe65dec8217ca2efadc44e7df11caf1e9757e1fb 100644
--- a/controller/topology/topologyService_test.go
+++ b/controller/topology/topologyService_test.go
@@ -6,7 +6,7 @@ import (
 
 	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
 	eventInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/event"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
@@ -197,7 +197,7 @@ func TestTopologyService_AddLink(t *testing.T) {
 				return
 			}
 
-			got, err := p.Get(query.Query{ID: tt.args.link.ID})
+			got, err := p.Get(model.Query{ID: tt.args.link.ID})
 			if (err != nil) != tt.wantErr {
 				t.Errorf("service.Get() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -255,7 +255,7 @@ func TestTopologyService_Update(t *testing.T) {
 				return
 			}
 
-			got, err := p.Get(query.Query{ID: tt.args.link.ID})
+			got, err := p.Get(model.Query{ID: tt.args.link.ID})
 			if (err != nil) != tt.wantErr {
 				t.Errorf("service.Get() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -333,7 +333,7 @@ func TestTopologyService_Get(t *testing.T) {
 		eventService eventInterfaces.Service
 	}
 	type args struct {
-		query query.Query
+		query model.Query
 	}
 	tests := []struct {
 		name    string
@@ -350,7 +350,7 @@ func TestTopologyService_Get(t *testing.T) {
 				portService: ports.NewPortService(getTestStoreWithPorts(t, []ports.Port{}), eventservice.NewMockEventService()),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestLink().ID,
 					Name: getTestLink().Name,
 				},
@@ -364,7 +364,7 @@ func TestTopologyService_Get(t *testing.T) {
 				store: getTestStoreWithLinks(t, []links.Link{getTestLink()}),
 			},
 			args: args{
-				query: query.Query{
+				query: model.Query{
 					ID:   getTestLink().ID,
 					Name: getTestLink().Name,
 				},
diff --git a/controller/topology/topologyStore.go b/controller/topology/topologyStore.go
index 375f85226b8956a7b7bb0aaf7bfd5a7e755489be..9c08c7dd8930ba36800f93ae4dd38b93b2527aaa 100644
--- a/controller/topology/topologyStore.go
+++ b/controller/topology/topologyStore.go
@@ -4,8 +4,8 @@ import (
 	"fmt"
 
 	"code.fbi.h-da.de/danet/gosdn/controller/customerrs"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/domain/model"
 	"code.fbi.h-da.de/danet/gosdn/controller/nucleus/pkg/persistence/mongodb"
-	query "code.fbi.h-da.de/danet/gosdn/controller/store"
 	"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
 
 	"github.com/google/uuid"
@@ -19,7 +19,7 @@ type Store interface {
 	Add(links.Link) error
 	Update(links.Link) error
 	Delete(links.Link) error
-	Get(query.Query) (links.Link, error)
+	Get(model.Query) (links.Link, error)
 	GetAll() ([]links.Link, error)
 }
 
@@ -36,7 +36,7 @@ func NewDatabaseTopologyStore() Store {
 }
 
 // Get takes a link's UUID or name and returns the link.
-func (s *DatabaseTopologyStore) Get(query query.Query) (links.Link, error) {
+func (s *DatabaseTopologyStore) Get(query model.Query) (links.Link, error) {
 	var loadedTopology links.Link
 
 	if query.ID.String() != "" {