diff --git a/src/main/kotlin/configuration/InjectionConfiguration.kt b/src/main/kotlin/configuration/InjectionConfiguration.kt
index 5d3230f189171670234d43d955881a7d29fad251..57d0f079adc670ebb33dcba53dbe8e5d79f24c52 100644
--- a/src/main/kotlin/configuration/InjectionConfiguration.kt
+++ b/src/main/kotlin/configuration/InjectionConfiguration.kt
@@ -1,6 +1,7 @@
 package betclic.test.configuration
 
 import betclic.test.player.repositories.PlayerRepository
+import betclic.test.player.repositories.PlayerRepositoryImpl
 import betclic.test.player.services.PlayerService
 import betclic.test.player.services.PlayerServiceImpl
 import io.ktor.server.application.*
@@ -22,6 +23,6 @@ val databaseModule = module {
 }
 
 val playerModule = module {
-    single<PlayerRepository> { PlayerRepository(get()) }
+    single<PlayerRepository> { PlayerRepositoryImpl(get()) }
     single<PlayerService> { PlayerServiceImpl(get()) }
 }
diff --git a/src/main/kotlin/player/repositories/PlayerRepository.kt b/src/main/kotlin/player/repositories/PlayerRepository.kt
index f5b8ef2a2656e87b7cff8bd5bacfb7648adc3b19..4d19b9c750baffae5e8a29c2afc2a3336615355e 100644
--- a/src/main/kotlin/player/repositories/PlayerRepository.kt
+++ b/src/main/kotlin/player/repositories/PlayerRepository.kt
@@ -1,69 +1,18 @@
 package betclic.test.player.repositories
 
 import betclic.test.player.entities.Player
-import betclic.test.player.entities.PlayerEntity
-import betclic.test.player.entities.toPlayer
-import betclic.test.player.entities.toPlayerEntity
-import dev.andrewohara.dynamokt.DataClassTableSchema
-import io.ktor.server.application.*
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.future.await
-import kotlinx.coroutines.reactive.asFlow
-import org.slf4j.LoggerFactory
-import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient
-import software.amazon.awssdk.enhanced.dynamodb.Expression
-import software.amazon.awssdk.enhanced.dynamodb.Key
-import software.amazon.awssdk.enhanced.dynamodb.model.ScanEnhancedRequest
-import software.amazon.awssdk.services.dynamodb.model.AttributeValue
 
-class PlayerRepository(dynamoDbEnhancedClient: DynamoDbEnhancedAsyncClient) {
-    private val tableName = PlayerEntity::class.simpleName
-    private val tableSchema = DataClassTableSchema(PlayerEntity::class)
-    private val table = dynamoDbEnhancedClient.table(tableName, tableSchema)
-    private val logger = LoggerFactory.getLogger(Application::class.java)
+interface PlayerRepository {
 
-    suspend fun createNewPlayer(player: Player) = coroutineScope {
-        table.putItem(player.toPlayerEntity()).await()
-        logger.info("Successfully created new player $player")
-        return@coroutineScope player
-    }
+    suspend fun createNewPlayer(player: Player): Player
 
-    suspend fun updatePlayer(player: Player): Player {
-        val updatedPlayer = table.updateItem(player.toPlayerEntity()).await()
-        return updatedPlayer.toPlayer()
-    }
+    suspend fun updatePlayer(player: Player): Player
 
-    suspend fun findPlayerByPseudo(pseudo: String): Player? {
-        val foundPlayer = table.getItem(
-            Key.builder().partitionValue(pseudo).build()
-        ).await()
-        return foundPlayer?.toPlayer()
-    }
+    suspend fun findPlayerByPseudo(pseudo: String): Player?
 
-    suspend fun getRank(player: Player): Int {
-        val scan = ScanEnhancedRequest.builder()
-            .filterExpression(
-                Expression.builder()
-                    .expression("pointsNumber > :pointsNumber")
-                    .putExpressionValue(
-                        ":pointsNumber", AttributeValue.builder().n(player.pointsNumber.toString()).build()
-                    ).build()
-            ).build()
-        return buildList {
-            table.scan(scan).asFlow().collect { it.items().stream().forEach { t -> add(t) } }
-        }.size + 1
-    }
+    suspend fun getRank(player: Player): Int
 
-    suspend fun findAll(): List<Player> {
-        return buildList {
-            table.scan().asFlow().collect { it.items().stream().forEach { item -> add(item.toPlayer()) } }
-        }
-    }
+    suspend fun findAll(): List<Player>
 
-
-    suspend fun deleteAllPlayers() {
-        table.deleteTable()
-        table.createTable().await()
-
-    }
+    suspend fun deleteAllPlayers()
 }
\ No newline at end of file
diff --git a/src/main/kotlin/player/repositories/PlayerRepositoryImpl.kt b/src/main/kotlin/player/repositories/PlayerRepositoryImpl.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4e273e43a9b08c4a15c5fac66062d5bbef125c1a
--- /dev/null
+++ b/src/main/kotlin/player/repositories/PlayerRepositoryImpl.kt
@@ -0,0 +1,69 @@
+package betclic.test.player.repositories
+
+import betclic.test.player.entities.Player
+import betclic.test.player.entities.PlayerEntity
+import betclic.test.player.entities.toPlayer
+import betclic.test.player.entities.toPlayerEntity
+import dev.andrewohara.dynamokt.DataClassTableSchema
+import io.ktor.server.application.*
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.future.await
+import kotlinx.coroutines.reactive.asFlow
+import org.slf4j.LoggerFactory
+import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient
+import software.amazon.awssdk.enhanced.dynamodb.Expression
+import software.amazon.awssdk.enhanced.dynamodb.Key
+import software.amazon.awssdk.enhanced.dynamodb.model.ScanEnhancedRequest
+import software.amazon.awssdk.services.dynamodb.model.AttributeValue
+
+class PlayerRepositoryImpl(dynamoDbEnhancedClient: DynamoDbEnhancedAsyncClient) : PlayerRepository {
+    private val tableName = PlayerEntity::class.simpleName
+    private val tableSchema = DataClassTableSchema(PlayerEntity::class)
+    private val table = dynamoDbEnhancedClient.table(tableName, tableSchema)
+    private val logger = LoggerFactory.getLogger(Application::class.java)
+
+    override suspend fun createNewPlayer(player: Player) = coroutineScope {
+        table.putItem(player.toPlayerEntity()).await()
+        logger.info("Successfully created new player $player")
+        return@coroutineScope player
+    }
+
+    override suspend fun updatePlayer(player: Player): Player {
+        val updatedPlayer = table.updateItem(player.toPlayerEntity()).await()
+        return updatedPlayer.toPlayer()
+    }
+
+    override suspend fun findPlayerByPseudo(pseudo: String): Player? {
+        val foundPlayer = table.getItem(
+            Key.builder().partitionValue(pseudo).build()
+        ).await()
+        return foundPlayer?.toPlayer()
+    }
+
+    override suspend fun getRank(player: Player): Int {
+        val scan = ScanEnhancedRequest.builder()
+            .filterExpression(
+                Expression.builder()
+                    .expression("pointsNumber > :pointsNumber")
+                    .putExpressionValue(
+                        ":pointsNumber", AttributeValue.builder().n(player.pointsNumber.toString()).build()
+                    ).build()
+            ).build()
+        return buildList {
+            table.scan(scan).asFlow().collect { it.items().stream().forEach { t -> add(t) } }
+        }.size + 1
+    }
+
+    override suspend fun findAll(): List<Player> {
+        return buildList {
+            table.scan().asFlow().collect { it.items().stream().forEach { item -> add(item.toPlayer()) } }
+        }
+    }
+
+
+    override suspend fun deleteAllPlayers() {
+        table.deleteTable()
+        table.createTable().await()
+
+    }
+}
\ No newline at end of file