diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt
index 8abc485c..68c970ba 100644
--- a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt
+++ b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt
@@ -1,2 +1,10 @@
 package com.insanusmokrassar.postssystem.core.utils
 
+import com.insanusmokrassar.postssystem.core.content.ContentId
+import com.insanusmokrassar.postssystem.core.post.PostId
+import java.util.*
+
+private fun generateId() = UUID.randomUUID().toString()
+
+internal fun generatePostId(): PostId = generateId()
+internal fun generateContentId(): ContentId = generateId()
diff --git a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt
index ed0fd2e2..87e7fb82 100644
--- a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt
+++ b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt
@@ -2,16 +2,13 @@ package com.insanusmokrassar.postssystem.core.api
 
 import com.insanusmokrassar.postssystem.core.content.*
 import com.insanusmokrassar.postssystem.core.content.api.ContentAPI
+import com.insanusmokrassar.postssystem.core.utils.generateContentId
 import com.insanusmokrassar.postssystem.core.utils.pagination.*
 import kotlinx.coroutines.channels.BroadcastChannel
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.asFlow
 import kotlinx.serialization.ImplicitReflectionSerializer
-import java.util.*
-
-@ImplicitReflectionSerializer
-private fun generateId(): ContentId = UUID.randomUUID().toString()
 
 @ImplicitReflectionSerializer
 class InMemoryContentAPI(
@@ -32,7 +29,7 @@ class InMemoryContentAPI(
 
     override suspend fun createContent(content: Content): RegisteredContent? {
         return RegisteredContent(
-            generateId(),
+            generateContentId(),
             content
         ).also { registeredContent ->
             contents[registeredContent.id] = registeredContent
diff --git a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryPostsAPI.kt b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryPostsAPI.kt
index c932a4f4..c9864b21 100644
--- a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryPostsAPI.kt
+++ b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryPostsAPI.kt
@@ -3,6 +3,7 @@ package com.insanusmokrassar.postssystem.core.api
 import com.insanusmokrassar.postssystem.core.content.ContentId
 import com.insanusmokrassar.postssystem.core.post.*
 import com.insanusmokrassar.postssystem.core.post.api.PostsAPI
+import com.insanusmokrassar.postssystem.core.utils.generatePostId
 import com.insanusmokrassar.postssystem.core.utils.pagination.*
 import kotlinx.coroutines.channels.BroadcastChannel
 import kotlinx.coroutines.channels.Channel.Factory.BUFFERED
@@ -12,9 +13,6 @@ import kotlinx.serialization.ImplicitReflectionSerializer
 import org.joda.time.DateTime
 import java.util.*
 
-@ImplicitReflectionSerializer
-private fun generateId(): PostId = UUID.randomUUID().toString()
-
 /**
  * Thread-unsafe sample realization of [PostsAPI]
  */
@@ -39,7 +37,7 @@ class InMemoryPostsAPI(
 
     override suspend fun createPost(post: Post): RegisteredPost? {
         return SimpleRegisteredPost(
-            generateId(),
+            generatePostId(),
             post.content
         ).also { newPost ->
             posts[newPost.id] = newPost