diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt
index 34d0eed17e2261183339bd358ae1b091003cc790..ddac7bd41353331d3224deea566e4a4e443eee99 100644
--- a/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt
+++ b/src/main/kotlin/de/thk/gm/gdw/todolist/controllers/TasksController.kt
@@ -2,15 +2,17 @@ package de.thk.gm.gdw.todolist.controllers
 
 import de.thk.gm.gdw.todolist.models.Task
 import de.thk.gm.gdw.todolist.repositories.TasksRepository
+import de.thk.gm.gdw.todolist.services.TasksService
 import org.springframework.data.repository.findByIdOrNull
 import org.springframework.http.HttpStatus
 import org.springframework.stereotype.Controller
 import org.springframework.web.bind.annotation.*
+import java.sql.DriverManager
 import java.util.*
 import kotlin.collections.ArrayList
 
 @Controller
-class TasksController (private val tasksRepository: TasksRepository) {
+class TasksController (private val tasksService: TasksService) {
 
     @PostMapping("/tasks")
     @ResponseBody
@@ -18,34 +20,51 @@ class TasksController (private val tasksRepository: TasksRepository) {
     fun saveTask(name : String) {
         var task = Task()
         task.name = name
-        tasksRepository.save(task)
+        tasksService.save(task)
 
     }
 
     @GetMapping("/tasks")
     @ResponseBody
     fun getTasks() : String {
-        val tasks = tasksRepository.findByOpenTrue()
+        val tasks = tasksService.getAll()
         return tasks.joinToString(",")
     }
 
     @GetMapping("/tasks/{id}")
     @ResponseBody
     fun getTaskById(@PathVariable("id") id : UUID) : String {
-        val task : Task? = tasksRepository.findByIdOrNull(id)
+        val task : Task? = tasksService.getById(id)
         return task!!.name
     }
 
     @PutMapping("/tasks/{id}")
     @ResponseStatus(HttpStatus.NO_CONTENT)
     fun updateTask(@PathVariable("id") id : UUID, name : String) {
-        val task : Task? = tasksRepository.findByIdOrNull(id)
+        val task : Task? = tasksService.getById(id)
         task!!.name = name
     }
 
     @DeleteMapping("/tasks/{id}")
     @ResponseStatus(HttpStatus.NO_CONTENT)
     fun deleteTask(@PathVariable("id") id : UUID) {
-        tasksRepository.deleteById(id)
+        tasksService.delete(id)
+    }
+
+    @PostMapping("/tightCoupled/tasks")
+    @ResponseStatus(HttpStatus.CREATED)
+    fun saveTightlyCoupled(name : String) {
+        var task : Task = Task()
+        task.name = name
+
+        val con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "admin", "123")
+        var preStm = con.prepareStatement("INSERT INTO TASK (ID, NAME, OPEN, CREATEDAT, UPDATEDAT) VALUES (?, ?, ?, ?)")
+        preStm.setString(1, task.id.toString())
+        preStm.setString(2, task.name)
+        preStm.setString(3, task.open.toString())
+        preStm.setString(4, task.createdAt.toString())
+        preStm.setString(5, task.updatedAt.toString())
+        val rs = preStm.executeQuery()
+
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt
index be4b3f9e645eccc49ee6fba4d3732641f545456c..895854702b56a6e83e652158ab48df1b4bbac444 100644
--- a/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt
+++ b/src/main/kotlin/de/thk/gm/gdw/todolist/models/Task.kt
@@ -11,6 +11,7 @@ class Task {
     var name: String = ""
     var open: Boolean = true
     var createdAt: Date = Date()
+    var updatedAt: Date = Date()
 
     override fun toString(): String {
         return "Task(id=$id, name='$name', open=$open, createdAt=$createdAt)"
diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ee17fc7a6e6bd896aaa008c16a2183995b07c8f8
--- /dev/null
+++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TaskServiceImplCloud.kt
@@ -0,0 +1,45 @@
+package de.thk.gm.gdw.todolist.services
+
+import de.thk.gm.gdw.todolist.models.Task
+import org.springframework.http.HttpStatus
+import org.springframework.stereotype.Service
+import org.springframework.web.server.ResponseStatusException
+import java.net.URI
+import java.net.http.HttpClient
+import java.net.http.HttpRequest
+import java.net.http.HttpResponse
+import java.util.*
+
+@Service
+class TaskServiceImplCloud : TasksService {
+    override fun getAll(): List<Task> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getAll(open: Boolean): List<Task> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getById(id: UUID): Task? {
+        TODO("Not yet implemented")
+    }
+
+    override fun save(task: Task): Task {
+        val client = HttpClient.newBuilder().build();
+        val request = HttpRequest.newBuilder().POST(HttpRequest.BodyPublishers.ofString(task.toString()))
+            .uri(URI.create("https://cloud-database.org/tasks")).build()
+        val response = client.send(request, HttpResponse.BodyHandlers.ofString())
+
+        if(response.statusCode() == 201) {
+            return task
+        } else {
+            throw ResponseStatusException(HttpStatus.BAD_REQUEST)
+        }
+
+
+    }
+
+    override fun delete(id: UUID) {
+        TODO("Not yet implemented")
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0d4f401b06f85d5d29c6a6a8c46cc368d58466b9
--- /dev/null
+++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksService.kt
@@ -0,0 +1,12 @@
+package de.thk.gm.gdw.todolist.services
+
+import de.thk.gm.gdw.todolist.models.Task
+import java.util.*
+
+interface TasksService {
+    fun getAll(): List<Task>
+    fun getAll(open: Boolean = false): List<Task>
+    fun getById(id: UUID): Task?
+    fun save(task: Task): Task
+    fun delete(id: UUID)
+}
\ No newline at end of file
diff --git a/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6d976210dcc0b656f3a71ed8a0888efc02e9fc6e
--- /dev/null
+++ b/src/main/kotlin/de/thk/gm/gdw/todolist/services/TasksServiceImpl.kt
@@ -0,0 +1,35 @@
+package de.thk.gm.gdw.todolist.services
+
+import de.thk.gm.gdw.todolist.models.Task
+import de.thk.gm.gdw.todolist.repositories.TasksRepository
+import org.springframework.context.annotation.Primary
+import org.springframework.stereotype.Service
+import java.util.*
+
+@Primary
+@Service
+class TasksServiceImpl (private val tasksRepository: TasksRepository) : TasksService {
+    override fun getAll(): List<Task> {
+        return tasksRepository.findAll().toList()
+    }
+
+    override fun getAll(open: Boolean): List<Task> {
+        return if(open){
+            tasksRepository.findByOpenTrue()
+        } else {
+            tasksRepository.findByOpenFalse()
+        }
+    }
+
+    override fun getById(id: UUID): Task? {
+        return tasksRepository.findById(id).orElse(null)
+    }
+
+    override fun save(task: Task): Task {
+        return tasksRepository.save(task)
+    }
+
+    override fun delete(id: UUID) {
+        tasksRepository.deleteById(id)
+    }
+}
\ No newline at end of file