diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d736d357be36cc09f467425811f388b08cc27655..bccf6a0e3f4d308f023312647a6da8179e990180 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,14 +5,20 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="9979eb22-471e-4f2f-b624-fd3edb5e8c6e" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/nix/scripts/cleanup.nix" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.back/scripts/hello.nix" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.gitlab-ci.yml" beforeDir="false" afterPath="$PROJECT_DIR$/.gitlab-ci.yml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/flake.nix" beforeDir="false" afterPath="$PROJECT_DIR$/flake.nix" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/nix/scripts/check-code.nix" beforeDir="false" afterPath="$PROJECT_DIR$/nix/scripts/check-code.nix" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/nix/scripts/deploy.nix" beforeDir="false" afterPath="$PROJECT_DIR$/nix/scripts/deploy.nix" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-1_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-1_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-2_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-2_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-3_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-3_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-4_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-4_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-5_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-5_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-7_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-7_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database-8_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database-8_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database.go" beforeDir="false" afterPath="$PROJECT_DIR$/database.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/database_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/database_test.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/job-syncer.go" beforeDir="false" afterPath="$PROJECT_DIR$/job-syncer.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/job-syncer_test.go" beforeDir="false" afterPath="$PROJECT_DIR$/job-syncer_test.go" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/nix/scripts/go-task.nix" beforeDir="false" afterPath="$PROJECT_DIR$/nix/scripts/go-task.nix" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/nix/scripts/run-tests.nix" beforeDir="false" afterPath="$PROJECT_DIR$/nix/scripts/run-tests.nix" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -50,10 +56,14 @@
   <component name="PropertiesComponent"><![CDATA[{
   "keyToString": {
     "DefaultGoTemplateProperty": "Go File",
+    "Go Test.TestDummyRunnable in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
     "Go Test.TestResetStats in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
     "Go Test.TestScheduleJob in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
     "Go Test.TestStructure in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
     "Go Test.TestTimeFunctionSame in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
+    "Go Test.TestWriteToDB1 in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
+    "Go Test.TestWriteToDB2 in gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
+    "Go Test.go test gitlab.schukai.com/oss/libraries/go/services/job-queues.executor": "Debug",
     "RunOnceActivity.ShowReadmeOnStart": "true",
     "RunOnceActivity.go.formatter.settings.were.checked": "true",
     "RunOnceActivity.go.migrated.go.modules.settings": "true",
@@ -80,7 +90,7 @@
       <recent name="$PROJECT_DIR$/.back" />
     </key>
   </component>
-  <component name="RunManager" selected="Go Test.TestResetStats in gitlab.schukai.com/oss/libraries/go/services/job-queues">
+  <component name="RunManager" selected="Go Test.TestWriteToDB1 in gitlab.schukai.com/oss/libraries/go/services/job-queues">
     <configuration default="true" type="GoApplicationRunConfiguration" factoryName="Go Application">
       <module name="job-queues" />
       <working_directory value="$PROJECT_DIR$" />
@@ -90,7 +100,7 @@
       <filePath value="$PROJECT_DIR$" />
       <method v="2" />
     </configuration>
-    <configuration name="TestResetStats in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
+    <configuration name="TestDummyRunnable in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
       <module name="job-queues" />
       <working_directory value="$PROJECT_DIR$" />
       <kind value="PACKAGE" />
@@ -98,10 +108,10 @@
       <directory value="$PROJECT_DIR$" />
       <filePath value="$PROJECT_DIR$" />
       <framework value="gotest" />
-      <pattern value="^\QTestResetStats\E$" />
+      <pattern value="^\QTestDummyRunnable\E$" />
       <method v="2" />
     </configuration>
-    <configuration name="TestScheduleJob in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
+    <configuration name="TestResetStats in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
       <module name="job-queues" />
       <working_directory value="$PROJECT_DIR$" />
       <kind value="PACKAGE" />
@@ -109,10 +119,10 @@
       <directory value="$PROJECT_DIR$" />
       <filePath value="$PROJECT_DIR$" />
       <framework value="gotest" />
-      <pattern value="^\QTestScheduleJob\E$" />
+      <pattern value="^\QTestResetStats\E$" />
       <method v="2" />
     </configuration>
-    <configuration name="TestStructure in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
+    <configuration name="TestWriteToDB1 in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
       <module name="job-queues" />
       <working_directory value="$PROJECT_DIR$" />
       <kind value="PACKAGE" />
@@ -120,10 +130,10 @@
       <directory value="$PROJECT_DIR$" />
       <filePath value="$PROJECT_DIR$" />
       <framework value="gotest" />
-      <pattern value="^\QTestStructure\E$" />
+      <pattern value="^\QTestWriteToDB1\E$" />
       <method v="2" />
     </configuration>
-    <configuration name="TestTimeFunctionSame in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
+    <configuration name="TestWriteToDB2 in gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
       <module name="job-queues" />
       <working_directory value="$PROJECT_DIR$" />
       <kind value="PACKAGE" />
@@ -131,7 +141,7 @@
       <directory value="$PROJECT_DIR$" />
       <filePath value="$PROJECT_DIR$" />
       <framework value="gotest" />
-      <pattern value="^\QTestTimeFunctionSame\E$" />
+      <pattern value="^\QTestWriteToDB2\E$" />
       <method v="2" />
     </configuration>
     <configuration default="true" type="GoTestRunConfiguration" factoryName="Go Test">
@@ -144,12 +154,23 @@
       <framework value="gotest" />
       <method v="2" />
     </configuration>
+    <configuration name="go test gitlab.schukai.com/oss/libraries/go/services/job-queues" type="GoTestRunConfiguration" factoryName="Go Test" temporary="true" nameIsGenerated="true">
+      <module name="job-queues" />
+      <working_directory value="$PROJECT_DIR$" />
+      <kind value="PACKAGE" />
+      <package value="gitlab.schukai.com/oss/libraries/go/services/job-queues" />
+      <directory value="$PROJECT_DIR$" />
+      <filePath value="$PROJECT_DIR$" />
+      <framework value="gotest" />
+      <method v="2" />
+    </configuration>
     <recent_temporary>
       <list>
+        <item itemvalue="Go Test.TestWriteToDB1 in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
+        <item itemvalue="Go Test.TestWriteToDB2 in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
+        <item itemvalue="Go Test.TestDummyRunnable in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
+        <item itemvalue="Go Test.go test gitlab.schukai.com/oss/libraries/go/services/job-queues" />
         <item itemvalue="Go Test.TestResetStats in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
-        <item itemvalue="Go Test.TestStructure in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
-        <item itemvalue="Go Test.TestScheduleJob in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
-        <item itemvalue="Go Test.TestTimeFunctionSame in gitlab.schukai.com/oss/libraries/go/services/job-queues" />
       </list>
     </recent_temporary>
   </component>
@@ -178,6 +199,21 @@
           <line>51</line>
           <option name="timeStamp" value="9" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
+          <url>file://$PROJECT_DIR$/schedule-time.go</url>
+          <line>25</line>
+          <option name="timeStamp" value="18" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
+          <url>file://$PROJECT_DIR$/database-2_test.go</url>
+          <line>25</line>
+          <option name="timeStamp" value="20" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
+          <url>file://$PROJECT_DIR$/job-syncer.go</url>
+          <line>70</line>
+          <option name="timeStamp" value="21" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
   </component>
diff --git a/database-1_test.go b/database-1_test.go
index 7e04839fc1e74ef00f2ccd4a23e3fe12162a277f..f4fd3a54c590a9bf69f941a17b797caeba4b0cd0 100644
--- a/database-1_test.go
+++ b/database-1_test.go
@@ -15,10 +15,17 @@ import (
 
 func TestWriteToDB1(t *testing.T) {
 
-	gormDB, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
 		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
 
 	gormDB.Logger = gormDB.Logger.LogMode(4)
 
@@ -36,18 +43,17 @@ func TestWriteToDB1(t *testing.T) {
 	}
 
 	job.scheduler = scheduler
-
 	saver.Sync(job)
 	saver.Sync(job)
 
 	manager.WaitSync()
-
-	// check if stats are in database
+	time.Sleep(1 * time.Second)
 	var stats JobPersistence
 	err = gormDB.First(&stats, "id = ?", job.GetID()).Error
 	assert.Nil(t, err)
 
 	assert.Equal(t, job.GetID(), stats.ID)
 	assert.Equal(t, job.GetID(), stats.ID)
+	manager.WaitSync()
 
 }
diff --git a/database-2_test.go b/database-2_test.go
index 266ca7390385d33cac6b90f9b2984284c4e8d895..43f58c1c4f8a8c860855296ad595057968432d5e 100644
--- a/database-2_test.go
+++ b/database-2_test.go
@@ -9,38 +9,33 @@ import (
 	"gorm.io/driver/sqlite"
 	"gorm.io/gorm"
 	"runtime"
-	"sync"
 	"testing"
 	"time"
 )
 
 func TestWriteToDB2(t *testing.T) {
-	gormDB, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
 		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
 
 	gormDB.Logger = gormDB.Logger.LogMode(4)
-
 	manager := &Manager{database: gormDB}
 
 	// Starte den DBSaver
 	NewJobSyncer(manager)
 
 	db := gormDB
-
-	var wg sync.WaitGroup
-
-	wg.Add(1)
-	defer wg.Done()
-
 	mgr := NewManager()
 	mgr.SetDB(gormDB)
 
-	// run sub tests
-	wg.Add(1)
-	defer wg.Done()
-
 	worker := NewLocalWorker(1)
 	err = mgr.AddWorker(worker)
 	assert.Nil(t, err)
@@ -54,66 +49,73 @@ func TestWriteToDB2(t *testing.T) {
 	scheduler := &InstantScheduler{}
 	err = mgr.ScheduleJob(job, scheduler)
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
 	err = mgr.CancelJobSchedule("job1")
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
 
 	scheduler2 := &InstantScheduler{}
 	err = mgr.ScheduleJob(job, scheduler2)
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
 	err = mgr.CancelJobSchedule("job1")
 	assert.Nil(t, err)
 
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
 
 	scheduler3 := &InstantScheduler{}
 	err = mgr.ScheduleJob(job, scheduler3)
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
 
 	if mgr.jobSyncer == nil {
 		t.Error("mgr.JobSyncer == nil")
 		return
 	}
 
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
 
-	mgr.jobSyncer.Sync(job)
+	_ = mgr.jobSyncer.Sync(job)
+	_ = manager.WaitSync()
 
 	runtime.Gosched()
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
 	err = mgr.CancelJobSchedule("job1")
 	assert.Nil(t, err)
 
 	runtime.Gosched()
-	time.Sleep(1 * time.Second)
+	//	time.Sleep(1 * time.Second)
+	_ = manager.WaitSync()
 
 	scheduler4 := &InstantScheduler{}
 	err = mgr.ScheduleJob(job, scheduler4)
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
 	runtime.Gosched()
-	time.Sleep(1 * time.Second)
+	//time.Sleep(1 * time.Second)
 
-	mgr.jobSyncer.Sync(job)
+	_ = mgr.jobSyncer.Sync(job)
+	_ = manager.WaitSync()
 
-	time.Sleep(2 * time.Second)
+	//time.Sleep(2 * time.Second)
 	err = mgr.CancelJobSchedule("job1")
 	assert.Nil(t, err)
+	_ = manager.WaitSync()
 
 	tries := 10
 	for tries > 0 {
 
 		var tmpJob JobPersistence
-
 		if err := db.First(&tmpJob, "id = ?", "job1").Error; err == nil {
 			break
 		}
-
 		tries--
 		time.Sleep(1 * time.Second)
 
@@ -121,11 +123,10 @@ func TestWriteToDB2(t *testing.T) {
 
 	assert.True(t, tries > 0)
 
+	time.Sleep(1 * time.Second)
 	err = LoadJobsAndScheduleFromDatabase(db, mgr)
 	assert.Nil(t, err)
-
+	_ = manager.WaitSync()
 	time.Sleep(1 * time.Second)
 
-	mgr.jobSyncer.Sync(job)
-
 }
diff --git a/database-3_test.go b/database-3_test.go
index cdf2df96b221ec543d9a89643a5213c8b7ea4f2f..4e7b557c6722aaf56b06122630d3403c719b3c7f 100644
--- a/database-3_test.go
+++ b/database-3_test.go
@@ -14,11 +14,19 @@ import (
 
 func TestWriteToDB3(t *testing.T) {
 
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
 		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
 
+	db := gormDB
 	db.Logger = db.Logger.LogMode(4)
 
 	manager := NewManager()
diff --git a/database-4_test.go b/database-4_test.go
index 7b9e78853450832bd6e00ff03f1f83274d50ec9b..ef1bc0af1b0cdc0264f631466241b55f9b0960c9 100644
--- a/database-4_test.go
+++ b/database-4_test.go
@@ -12,11 +12,19 @@ import (
 
 func TestWriteToDB4(t *testing.T) {
 
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
-	//db, err := gorm.Open(sqlite.Open("file:/home/vs/workspaces/alvine/cloud/framework/dummy.sqlite"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
-		t.Fatalf("an error occurred while opening the database: %v", err)
+		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	manager := NewManager()
 	manager.SetDB(db)
diff --git a/database-5_test.go b/database-5_test.go
index adf20410224f18ee1959196bb3f2e8646fec93be..236d5521fe18d3e0e76cbdcf2b0c68478ae31aaf 100644
--- a/database-5_test.go
+++ b/database-5_test.go
@@ -11,10 +11,19 @@ import (
 
 func TestWriteToDB5(t *testing.T) {
 
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
 		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	manager := NewManager()
 	manager.SetDB(db)
diff --git a/database-6_test.go b/database-6_test.go
index 731920f0756bbde5f28b242e104b55bf221a2d2b..09c9a5ce410210d323985ad58e5be33bd2e47ec7 100644
--- a/database-6_test.go
+++ b/database-6_test.go
@@ -23,8 +23,19 @@ func TestWriteToDB6(t *testing.T) {
 	//dsn := "root:my-secret-pw@tcp(localhost:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local"
 	//db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
 
-	db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
-	assert.NoError(t, err)
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	manager := NewManager()
 	manager.SetDB(db)
diff --git a/database-7_test.go b/database-7_test.go
index 963cdab9cfb022f7b6c391e293a2328d97978ccf..65d274847193bfce43aaa80d82179c5181adf326 100644
--- a/database-7_test.go
+++ b/database-7_test.go
@@ -11,8 +11,19 @@ import (
 )
 
 func TestCreateOrUpdateJob(t *testing.T) {
-	db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
-	assert.NoError(t, err)
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	// Migrate the schema
 	assert.NoError(t, db.AutoMigrate(&JobPersistence{}, &JobLog{}, &JobStats{}))
@@ -20,7 +31,7 @@ func TestCreateOrUpdateJob(t *testing.T) {
 	runner := &CounterRunnable{}
 	job := NewJob[CounterResult]("job1", runner)
 
-	assert.NoError(t, saveJob(job, db))
+	assert.NoError(t, saveJob(job.GetPersistence(), db))
 
 	var jobPersistence JobPersistence
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
@@ -29,7 +40,7 @@ func TestCreateOrUpdateJob(t *testing.T) {
 	assert.Equal(t, "", jobPersistence.Description)
 	assert.Equal(t, Priority(1), jobPersistence.Priority)
 	job.description = "Updated description"
-	assert.NoError(t, saveJob(job, db))
+	assert.NoError(t, saveJob(job.GetPersistence(), db))
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
 	assert.Equal(t, "Updated description", jobPersistence.Description)
 
diff --git a/database-8_test.go b/database-8_test.go
index dfaa323ad4db1f904765a7ec1df74a4a6807d804..a87cdacf655b331d53447d888185740dd6f523d7 100644
--- a/database-8_test.go
+++ b/database-8_test.go
@@ -7,31 +7,39 @@ import (
 	"github.com/stretchr/testify/assert"
 	"gorm.io/driver/sqlite"
 	"gorm.io/gorm"
-	"gorm.io/gorm/logger"
-	"log"
-	"os"
 	"testing"
 	"time"
 )
 
 func TestUpdateJob(t *testing.T) {
-	db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
-	assert.NoError(t, err)
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	assert.NoError(t, db.AutoMigrate(&JobPersistence{}, &JobLog{}, &JobStats{}))
 
 	runner := &CounterRunnable{}
 	job := NewJob[CounterResult]("job1", runner)
-	assert.NoError(t, saveJob(job, db))
+	assert.NoError(t, saveJob(job.GetPersistence(), db))
 
 	job.SetPriority(PriorityHigh)
-	assert.NoError(t, updateJob(job, db))
+	assert.NoError(t, updateJob(job.GetPersistence(), db))
 
 	var jobPersistence JobPersistence
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
 	assert.Equal(t, PriorityDefault, jobPersistence.Priority) // PriorityDefault because the update should not update the priority
 
-	assert.NoError(t, saveJob(job, db))
+	assert.NoError(t, saveJob(job.GetPersistence(), db))
 
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
 	assert.Equal(t, PriorityHigh, jobPersistence.Priority)
@@ -43,19 +51,19 @@ func TestUpdateJob(t *testing.T) {
 
 func TestCheckAndSaveOrUpdate(t *testing.T) {
 
-	newLogger := logger.New(
-		log.New(os.Stdout, "\r\n", log.LstdFlags),
-		logger.Config{
-			SlowThreshold: time.Second,
-			LogLevel:      logger.Info,
-			Colorful:      true,
-		},
-	)
-
-	db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{
-		Logger: newLogger,
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
 	})
-	assert.NoError(t, err)
+
+	db := gormDB
 
 	assert.NoError(t, db.AutoMigrate(&JobPersistence{}, &JobLog{}, &JobStats{}))
 
@@ -66,13 +74,13 @@ func TestCheckAndSaveOrUpdate(t *testing.T) {
 
 	var jobPersistence JobPersistence
 
-	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job))
+	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job.GetPersistence()))
 	jobPersistence = JobPersistence{}
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
 	assert.Equal(t, PriorityDefault, jobPersistence.Priority)
 
 	job.SetPriority(PriorityHigh)
-	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job))
+	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job.GetPersistence()))
 	jobPersistence = JobPersistence{}
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
 	assert.Equal(t, PriorityDefault, jobPersistence.Priority) // second update should not update the priority, because update only update stats and logs
@@ -94,10 +102,10 @@ func TestCheckAndSaveOrUpdate(t *testing.T) {
 			JobID: job.GetID(),
 		}}
 
-	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job))
+	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job.GetPersistence()))
 
 	job.stats.RunCount = 9
-	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job))
+	assert.NoError(t, syncer.CheckAndSaveOrUpdate(job.GetPersistence()))
 
 	jobPersistence = JobPersistence{}
 	assert.NoError(t, db.First(&jobPersistence, "id = ?", job.GetID()).Error)
diff --git a/database.go b/database.go
index 8e09113a6628f4c18d5f406d21a100c8b9b8eac5..ea33671c4701a5e4f0636e1da02fb49eda232e78 100644
--- a/database.go
+++ b/database.go
@@ -5,12 +5,13 @@ package jobqueue
 
 import (
 	"errors"
+	"fmt"
 	"gorm.io/gorm"
 	"strings"
 	"time"
 )
 
-func (s *JobSyncer) CheckAndSaveOrUpdate(job GenericJob) error {
+func (s *JobSyncer) CheckAndSaveOrUpdate(job JobPersistence) error {
 	s.mu.Lock()
 	defer s.mu.Unlock()
 
@@ -19,7 +20,7 @@ func (s *JobSyncer) CheckAndSaveOrUpdate(job GenericJob) error {
 	}
 
 	db := s.manager.database
-
+	fmt.Println("Database: ", db)
 	var existing JobPersistence
 	result := db.Where("id = ?", job.GetID()).First(&existing)
 
@@ -87,7 +88,7 @@ func (s *JobSyncer) ResetStats(job GenericJob) error {
 	if s.manager == nil || s.manager.database == nil {
 		return ErrNoDatabaseConnection
 	}
-	return updateJob(job, s.manager.database)
+	return updateJob(job.GetPersistence(), s.manager.database)
 
 }
 
@@ -97,21 +98,19 @@ func (s *JobSyncer) UpdateJob(job GenericJob) error {
 	if s.manager == nil || s.manager.database == nil {
 		return ErrNoDatabaseConnection
 	}
-	return updateJob(job, s.manager.database)
+	return updateJob(job.GetPersistence(), s.manager.database)
 }
 
-func updateJob(job GenericJob, db *gorm.DB) error {
+func updateJob(job JobPersistence, db *gorm.DB) error {
 
 	if db == nil {
 		return ErrNoDatabaseConnection
 	}
 
-	permJob := job.GetPersistence()
-
 	maxRetries := 3
 	var attempt int
 	for attempt = 0; attempt < maxRetries; attempt++ {
-		err := update(&permJob, db)
+		err := update(&job, db)
 		if err != nil {
 			if strings.Contains(err.Error(), "lock") {
 				time.Sleep(time.Millisecond * 100)
@@ -169,7 +168,7 @@ func (s *JobSyncer) SaveJob(job GenericJob) error {
 	if s.manager == nil || s.manager.database == nil {
 		return ErrNoDatabaseConnection
 	}
-	return saveJob(job, s.manager.database)
+	return saveJob(job.GetPersistence(), s.manager.database)
 }
 
 func save(job *JobPersistence, db *gorm.DB) error {
@@ -216,18 +215,16 @@ func save(job *JobPersistence, db *gorm.DB) error {
 	})
 }
 
-func saveJob(job GenericJob, db *gorm.DB) error {
+func saveJob(job JobPersistence, db *gorm.DB) error {
 
 	if db == nil {
 		return ErrNoDatabaseConnection
 	}
 
-	permJob := job.GetPersistence()
-
 	maxRetries := 3
 	var attempt int
 	for attempt = 0; attempt < maxRetries; attempt++ {
-		err := save(&permJob, db)
+		err := save(&job, db)
 		if err != nil {
 			if strings.Contains(err.Error(), "lock") {
 				time.Sleep(time.Millisecond * 100)
diff --git a/database_test.go b/database_test.go
index 7ee5f23cef13f0b76541e94e857c4f0e6bb3055f..69a0035672156301ad3b9038e77313ed1b9b00a1 100644
--- a/database_test.go
+++ b/database_test.go
@@ -12,8 +12,19 @@ import (
 )
 
 func TestDeleteJob(t *testing.T) {
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
-
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 	db.Logger = db.Logger.LogMode(4)
 
 	assert.Nil(t, err)
@@ -27,7 +38,7 @@ func TestDeleteJob(t *testing.T) {
 	// Erstelle einen Job zum Löschen
 	runner := &CounterRunnable{}
 	job := NewJob[CounterResult]("testJobID", runner)
-	err = saveJob(job, db)
+	err = saveJob(job.GetPersistence(), db)
 	assert.Nil(t, err)
 
 	var count int64
@@ -44,8 +55,19 @@ func TestDeleteJob(t *testing.T) {
 }
 
 func TestResetLogs(t *testing.T) {
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
-	assert.Nil(t, err)
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	db.Logger = db.Logger.LogMode(4)
 
@@ -60,7 +82,7 @@ func TestResetLogs(t *testing.T) {
 	// Erstelle einen Job und füge einige Logs hinzu
 	runner := &CounterRunnable{}
 	job := NewJob[CounterResult]("testJobID", runner)
-	err = saveJob(job, db)
+	err = saveJob(job.GetPersistence(), db)
 	assert.Nil(t, err)
 
 	// Füge Logs zum Job hinzu
@@ -85,8 +107,19 @@ func TestResetLogs(t *testing.T) {
 }
 
 func TestResetStats(t *testing.T) {
-	db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
-	assert.Nil(t, err)
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
+	if err != nil {
+		t.Fatalf("a error occurred while opening the database: %v", err)
+	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
+
+	db := gormDB
 
 	db.Logger = db.Logger.LogMode(4)
 
@@ -101,7 +134,7 @@ func TestResetStats(t *testing.T) {
 	// Erstelle einen Job und setze einige Statistiken
 	runner := &CounterRunnable{}
 	job := NewJob[CounterResult]("testJobID", runner)
-	err = saveJob(job, db)
+	err = saveJob(job.GetPersistence(), db)
 	assert.Nil(t, err)
 
 	// Aktualisiere die Job-Statistiken
diff --git a/job-syncer.go b/job-syncer.go
index c7349ca6e3cb6fb0cda27de05d228f08b1eda1f4..5fcb1ae5504bc17113a2257c7915ad70794e6768 100644
--- a/job-syncer.go
+++ b/job-syncer.go
@@ -60,11 +60,13 @@ func (js *JobSyncer) Sync(job GenericJob) error {
 	js.mu.Lock()
 	defer js.mu.Unlock()
 
+	persistenceJob := job.GetPersistence()
+
 	js.running.Add(1)
 	go func() {
 		defer js.running.Done()
 
-		err := js.CheckAndSaveOrUpdate(job)
+		err := js.CheckAndSaveOrUpdate(persistenceJob)
 		if err != nil {
 			Error("Error while creating or updating the job", err)
 		}
diff --git a/job-syncer_test.go b/job-syncer_test.go
index b67929698d15146d34a0e2b41c4cf2b7bcf35999..09e796bc8345b61cc4ae128de2a02f33303d9aca 100644
--- a/job-syncer_test.go
+++ b/job-syncer_test.go
@@ -15,10 +15,17 @@ import (
 
 func TestSaveJobWithSQLite(t *testing.T) {
 
-	gormDB, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
+	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
 	if err != nil {
 		t.Fatalf("a error occurred while opening the database: %v", err)
 	}
+	t.Cleanup(func() {
+		sqlDB, err := gormDB.DB()
+		if err != nil {
+			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
+		}
+		_ = sqlDB.Close()
+	})
 
 	manager := &Manager{database: gormDB}
 	//saver := NewJobSyncer(manager)
diff --git a/nix/scripts/go-task.nix b/nix/scripts/go-task.nix
index 99a206f8d02443ca01d101cef9bbd37053d27863..406aeacae8a4e6b19d2296bfe1b72d38b18a6c53 100644
--- a/nix/scripts/go-task.nix
+++ b/nix/scripts/go-task.nix
@@ -13,6 +13,7 @@
           - rt
         env:
           TEST_BY_TASK: true
+          USER_WORKING_DIR: "{{.USER_WORKING_DIR}}"        
         cmds:
           - run-tests
         silent: true
diff --git a/nix/scripts/run-tests.nix b/nix/scripts/run-tests.nix
index 8278344cb4d1e1b7cad258fa9cef7ab2f00a99fa..befcdfaa35c76772ceb25864068d6c30cce4a98d 100644
--- a/nix/scripts/run-tests.nix
+++ b/nix/scripts/run-tests.nix
@@ -11,8 +11,7 @@ in
 
     echo_header "Running tests"
 
-
-    selection=$(${pkgs.gum}/bin/gum choose "run specific test" "run all tests" "Cancel")
+    selection=$(${pkgs.gum}/bin/gum choose "run all tests" "run specific test" "Cancel")
 
     if [[ "$selection" == "Cancel" ]]; then
       echo_ok "Exiting."
@@ -21,6 +20,7 @@ in
 
     download_test_images
     setup_go_env
+    cd_working_dir
 
     if [[ "$selection" == "run all tests" ]]; then
       echo_ok "Running all tests"
@@ -52,8 +52,7 @@ in
         echo_ok "No tests selected, exiting."
         exit 0
     fi
-
-
+    
     if ! ${pkgs.go}/bin/go test -run "$(echo $selected_tests | tr '\n' "")"
     then
       echo_fail "ERROR: Tests failed, check your Go!"