diff --git a/controller/northbound/server/auth_interceptor_test.go b/controller/northbound/server/auth_interceptor_test.go
index 7de1c8c354df6ded32be7e7165b0c00d6a2197c6..8498b0e9d5eab1ef0eedcaeb49a104157eecd2d2 100644
--- a/controller/northbound/server/auth_interceptor_test.go
+++ b/controller/northbound/server/auth_interceptor_test.go
@@ -58,19 +58,24 @@ func dialer(interceptorServer *AuthInterceptor, userServer *User, roleServer *Ro
 }
 
 func TestAuthInterceptor_Unary(t *testing.T) {
-	a, u, r, s := getTestAuthInterceptorServer(t)
-	validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
+	authServer, userServer, roleServer, sbiServer := getTestAuthInterceptorServer(t)
+	validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	wrongUserToken, err := createTestUserToken("foo", false, a.userService, a.jwtManager)
+	wrongUserToken, err := createTestUserToken("foo", false, authServer.userService, authServer.jwtManager)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	ctx := context.Background()
-	conn, err := grpc.DialContext(ctx, "", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(dialer(a, u, r, s)))
+	conn, err := grpc.DialContext(
+		ctx,
+		"",
+		grpc.WithTransportCredentials(insecure.NewCredentials()),
+		grpc.WithContextDialer(dialer(authServer, userServer, roleServer, sbiServer)),
+	)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -145,14 +150,19 @@ func TestAuthInterceptor_Unary(t *testing.T) {
 }
 
 func TestAuthInterceptor_Stream(t *testing.T) {
-	a, u, r, s := getTestAuthInterceptorServer(t)
-	validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
+	authServer, userServer, roleServer, sbiServer := getTestAuthInterceptorServer(t)
+	validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	ctx := context.Background()
-	conn, err := grpc.DialContext(ctx, "", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(dialer(a, u, r, s)))
+	conn, err := grpc.DialContext(
+		ctx,
+		"",
+		grpc.WithTransportCredentials(insecure.NewCredentials()),
+		grpc.WithContextDialer(dialer(authServer, userServer, roleServer, sbiServer)),
+	)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -211,13 +221,13 @@ func TestAuthInterceptor_Stream(t *testing.T) {
 }
 
 func TestAuthInterceptor_authorize(t *testing.T) {
-	a, _, _, _ := getTestAuthInterceptorServer(t)
-	validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
+	authServer, _, _, _ := getTestAuthInterceptorServer(t)
+	validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
 	if err != nil {
 		t.Fatal(err)
 	}
 
-	wrongUserToken, err := createTestUserToken("foo", false, a.userService, a.jwtManager)
+	wrongUserToken, err := createTestUserToken("foo", false, authServer.userService, authServer.jwtManager)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -258,7 +268,7 @@ func TestAuthInterceptor_authorize(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			if err := a.authorize(tt.args.ctx, tt.args.method); (err != nil) != tt.wantErr {
+			if err := authServer.authorize(tt.args.ctx, tt.args.method); (err != nil) != tt.wantErr {
 				t.Errorf("AuthInterceptor.authorize() error = %v, wantErr %v", err, tt.wantErr)
 			}
 		})
diff --git a/controller/northbound/server/core_test.go b/controller/northbound/server/core_test.go
index 61b78f2fe5ef91c5e90b590364cb5298378960eb..333ac2eb6707fae6ecf467c8f5f57b3e9ffcaf25 100644
--- a/controller/northbound/server/core_test.go
+++ b/controller/northbound/server/core_test.go
@@ -7,8 +7,97 @@ import (
 	"time"
 
 	pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
+	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
+	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
+	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
+	"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
+	"code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
+	"github.com/google/uuid"
+	"github.com/stretchr/testify/mock"
 )
 
+func getTestCoreServer(t *testing.T) *Core {
+	var err error
+	pndUUID, err = uuid.Parse(pndID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	sbiUUID, err = uuid.Parse(sbiID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	pendingChangeUUID, err = uuid.Parse(pendingChangeID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	committedChangeUUID, err = uuid.Parse(committedChangeID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	deviceUUID, err = uuid.Parse(ondID)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	mockDevice = &nucleus.CommonDevice{
+		Model: &openconfig.Device{
+			System: &openconfig.OpenconfigSystem_System{
+				Config: &openconfig.OpenconfigSystem_System_Config{
+					Hostname:   &hostname,
+					DomainName: &domainname,
+				},
+			},
+		},
+		UUID: deviceUUID,
+	}
+
+	sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG, sbiUUID)
+	if err != nil {
+		t.Fatal(err)
+	}
+	mockDevice.(*nucleus.CommonDevice).SetSBI(sbi)
+	mockDevice.(*nucleus.CommonDevice).SetTransport(&mocks.Transport{})
+	mockDevice.(*nucleus.CommonDevice).SetName(hostname)
+	sbiStore = nucleus.NewSbiStore(pndUUID)
+	if err := sbiStore.Add(mockDevice.SBI()); err != nil {
+		t.Fatal(err)
+	}
+
+	mockChange := &mocks.Change{}
+	mockChange.On("Age").Return(time.Hour)
+	mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
+
+	mockPnd = &mocks.NetworkDomain{}
+	mockPnd.On("ID").Return(pndUUID)
+	mockPnd.On("GetName").Return("test")
+	mockPnd.On("GetDescription").Return("test")
+	mockPnd.On("GetSBIs").Return(sbiStore)
+	mockPnd.On("GetSBI", mock.Anything).Return(mockDevice.SBI(), nil)
+	mockPnd.On("Devices").Return([]uuid.UUID{deviceUUID})
+	mockPnd.On("PendingChanges").Return([]uuid.UUID{pendingChangeUUID})
+	mockPnd.On("CommittedChanges").Return([]uuid.UUID{committedChangeUUID})
+	mockPnd.On("GetChange", mock.Anything).Return(mockChange, nil)
+	mockPnd.On("AddDevice", mock.Anything, mock.Anything, mock.Anything).Return(nil)
+	mockPnd.On("GetDevice", mock.Anything).Return(mockDevice, nil)
+	mockPnd.On("Commit", mock.Anything).Return(nil)
+	mockPnd.On("Confirm", mock.Anything).Return(nil)
+	mockPnd.On("ChangeOND", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(uuid.Nil, nil)
+	mockPnd.On("Request", mock.Anything, mock.Anything).Return(nil, nil)
+
+	pndStore := nucleus.NewMemoryPndStore()
+	if err := pndStore.Add(mockPnd); err != nil {
+		t.Fatal(err)
+	}
+
+	c := NewCoreServer(pndStore)
+
+	return c
+}
+
 func Test_core_Set(t *testing.T) {
 	type args struct {
 		ctx     context.Context
@@ -41,9 +130,7 @@ func Test_core_Set(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			s := Core{
-				UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
-			}
+			s := getTestCoreServer(t)
 			got, err := s.CreatePndList(tt.args.ctx, tt.args.request)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("core.Set() error = %v, wantErr %v", err, tt.wantErr)
@@ -86,9 +173,7 @@ func Test_core_GetPnd(t *testing.T) {
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			s := Core{
-				UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
-			}
+			s := getTestCoreServer(t)
 			resp, err := s.GetPnd(tt.args.ctx, tt.args.request)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("core.GetPnd() error = %v, wantErr %v", err, tt.wantErr)
@@ -129,14 +214,12 @@ func Test_core_GetPndList(t *testing.T) {
 					Timestamp: time.Now().UnixNano(),
 				},
 			},
-			length: 2,
+			length: 1,
 		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			s := Core{
-				UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
-			}
+			s := getTestCoreServer(t)
 			resp, err := s.GetPndList(tt.args.ctx, tt.args.request)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("core.GetPndList() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go
index 3145caf573d354cabb3acfbe5246ecb058f871e8..bf7d1c463d448e145b9a6a1be993c3893f78eeed 100644
--- a/controller/northbound/server/pnd_test.go
+++ b/controller/northbound/server/pnd_test.go
@@ -2,11 +2,9 @@ package server
 
 import (
 	"context"
-	"reflect"
 	"testing"
 	"time"
 
-	pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
 	ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
 	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
 	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/device"
@@ -67,88 +65,6 @@ func initUUIDs(t *testing.T) {
 	}
 }
 
-func getTestCoreServer(t *testing.T) *Core {
-	var err error
-	pndUUID, err = uuid.Parse(pndID)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	sbiUUID, err = uuid.Parse(sbiID)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	pendingChangeUUID, err = uuid.Parse(pendingChangeID)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	committedChangeUUID, err = uuid.Parse(committedChangeID)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	deviceUUID, err = uuid.Parse(ondID)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	mockDevice = &nucleus.CommonDevice{
-		Model: &openconfig.Device{
-			System: &openconfig.OpenconfigSystem_System{
-				Config: &openconfig.OpenconfigSystem_System_Config{
-					Hostname:   &hostname,
-					DomainName: &domainname,
-				},
-			},
-		},
-		UUID: deviceUUID,
-	}
-
-	sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG, sbiUUID)
-	if err != nil {
-		t.Fatal(err)
-	}
-	mockDevice.(*nucleus.CommonDevice).SetSBI(sbi)
-	mockDevice.(*nucleus.CommonDevice).SetTransport(&mocks.Transport{})
-	mockDevice.(*nucleus.CommonDevice).SetName(hostname)
-	sbiStore = nucleus.NewSbiStore(pndUUID)
-	if err := sbiStore.Add(mockDevice.SBI()); err != nil {
-		t.Fatal(err)
-	}
-
-	mockChange := &mocks.Change{}
-	mockChange.On("Age").Return(time.Hour)
-	mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
-
-	mockPnd = &mocks.NetworkDomain{}
-	mockPnd.On("ID").Return(pndUUID)
-	mockPnd.On("GetName").Return("test")
-	mockPnd.On("GetDescription").Return("test")
-	mockPnd.On("GetSBIs").Return(sbiStore)
-	mockPnd.On("GetSBI", mock.Anything).Return(mockDevice.SBI(), nil)
-	mockPnd.On("Devices").Return([]uuid.UUID{deviceUUID})
-	mockPnd.On("PendingChanges").Return([]uuid.UUID{pendingChangeUUID})
-	mockPnd.On("CommittedChanges").Return([]uuid.UUID{committedChangeUUID})
-	mockPnd.On("GetChange", mock.Anything).Return(mockChange, nil)
-	mockPnd.On("AddDevice", mock.Anything, mock.Anything, mock.Anything).Return(nil)
-	mockPnd.On("GetDevice", mock.Anything).Return(mockDevice, nil)
-	mockPnd.On("Commit", mock.Anything).Return(nil)
-	mockPnd.On("Confirm", mock.Anything).Return(nil)
-	mockPnd.On("ChangeOND", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(uuid.Nil, nil)
-	mockPnd.On("Request", mock.Anything, mock.Anything).Return(nil, nil)
-
-	pndStore := nucleus.NewMemoryPndStore()
-	if err := pndStore.Add(mockPnd); err != nil {
-		t.Fatal(err)
-	}
-
-	c := NewCoreServer(pndStore)
-
-	return c
-}
-
 func getTestPndServer(t *testing.T) *PndServer {
 	var err error
 	pndUUID, err = uuid.Parse(pndID)
@@ -231,56 +147,6 @@ func getTestPndServer(t *testing.T) *PndServer {
 	return c
 }
 
-// TODO: We should re-add all tests for changes.
-// As of now this is not possible as we can't use the mock pnd, as it can't be serialized because of
-// cyclic use of mock in it.
-func Test_pnd_Get(t *testing.T) {
-	type args struct {
-		ctx     context.Context
-		request *pb.GetPndRequest
-	}
-	tests := []struct {
-		name    string
-		args    args
-		want    *pb.GetPndResponse
-		wantErr bool
-	}{
-		{
-			name: "get pnd",
-			args: args{
-				ctx: context.Background(),
-				request: &pb.GetPndRequest{
-					Pid: pndID,
-				},
-			},
-			want: &pb.GetPndResponse{
-				Pnd: &ppb.PrincipalNetworkDomain{
-					Id:          pndID,
-					Name:        "test",
-					Description: "test"},
-			},
-		},
-	}
-
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			c := getTestCoreServer(t)
-
-			resp, err := c.GetPnd(tt.args.ctx, tt.args.request)
-			if (err != nil) != tt.wantErr {
-				t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
-				return
-			}
-
-			got := resp.GetPnd()
-
-			if !reflect.DeepEqual(got, tt.want.Pnd) {
-				t.Errorf("Get() got = %v, want %v", got, tt.want.Pnd)
-			}
-		})
-	}
-}
-
 func Test_pnd_GetPath(t *testing.T) {
 	initUUIDs(t)