diff --git a/app/src/main/java/com/futo/circles/App.kt b/app/src/main/java/com/futo/circles/App.kt
index 6f9934578de776859e69ab966d6e6404ec0128d5..730870f180407958642b34f92d5aed8a53628c62 100644
--- a/app/src/main/java/com/futo/circles/App.kt
+++ b/app/src/main/java/com/futo/circles/App.kt
@@ -3,7 +3,6 @@ package com.futo.circles
 import android.app.Application
 import com.futo.circles.di.applicationModules
 import com.futo.circles.provider.MatrixSessionProvider
-import org.koin.android.ext.android.get
 import org.koin.android.ext.koin.androidContext
 import org.koin.core.context.startKoin
 
@@ -15,6 +14,6 @@ class App : Application() {
             androidContext(this@App)
             modules(applicationModules)
         }
-        get<MatrixSessionProvider>().initSession()
+        MatrixSessionProvider.initSession(applicationContext)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/MainActivity.kt b/app/src/main/java/com/futo/circles/MainActivity.kt
index 2b8928d552ffcfe56fefe0eb344500b3fcbb4553..fa17ebb0cb613e82f103d4f11d2c50ed5fe5811e 100644
--- a/app/src/main/java/com/futo/circles/MainActivity.kt
+++ b/app/src/main/java/com/futo/circles/MainActivity.kt
@@ -6,7 +6,6 @@ import androidx.navigation.NavController
 import androidx.navigation.NavGraph
 import androidx.navigation.fragment.NavHostFragment
 import com.futo.circles.provider.MatrixSessionProvider
-import org.koin.android.ext.android.get
 
 
 class MainActivity : AppCompatActivity(R.layout.main_activity) {
@@ -25,7 +24,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
     }
 
     private fun setStartDestination(navGraph: NavGraph) {
-        val startDestinationId = get<MatrixSessionProvider>().currentSession?.let {
+        val startDestinationId = MatrixSessionProvider.currentSession?.let {
             R.id.bottomNavigationFragment
         } ?: R.id.logInFragment
 
diff --git a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt
index e570f965d3adbbb95b33f9c975b4e57122a467fa..7c02aab1173deb07cca6112cd5cfd5e243ffabb1 100644
--- a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt
+++ b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt
@@ -6,9 +6,9 @@ import com.futo.circles.ui.log_in.data_source.LoginDataSource
 import org.koin.dsl.module
 
 val dataSourceModule = module {
-    factory { LoginDataSource(get(), get()) }
+    factory { LoginDataSource(get()) }
 
-    factory { (roomId: String) -> GroupTimelineDatasource(roomId, get(), get()) }
+    factory { (roomId: String) -> GroupTimelineDatasource(roomId, get()) }
 
     factory { GroupTimelineBuilder() }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/di/Modules.kt b/app/src/main/java/com/futo/circles/di/Modules.kt
index 29e895d549a5cc6db9cdc8c45cd183b608925622..d7324146b4b59a42da41d2f7fb12a8fc6514a004 100644
--- a/app/src/main/java/com/futo/circles/di/Modules.kt
+++ b/app/src/main/java/com/futo/circles/di/Modules.kt
@@ -1,3 +1,3 @@
 package com.futo.circles.di
 
-val applicationModules = listOf(uiModule, providerModule, dataSourceModule)
\ No newline at end of file
+val applicationModules = listOf(uiModule, dataSourceModule)
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/di/ProviderModule.kt b/app/src/main/java/com/futo/circles/di/ProviderModule.kt
deleted file mode 100644
index e3369eee3a232076bb73dd17cfde1a6c7813f7ac..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/futo/circles/di/ProviderModule.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.futo.circles.di
-
-import com.futo.circles.provider.MatrixSessionProvider
-import org.koin.dsl.module
-
-val providerModule = module {
-    single { MatrixSessionProvider(context = get()) }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/di/UiModule.kt b/app/src/main/java/com/futo/circles/di/UiModule.kt
index 8b5d91860061f3954b686123e4a240442abebf20..f866568372e9371adaf2dcb7c84b98c82de18411 100644
--- a/app/src/main/java/com/futo/circles/di/UiModule.kt
+++ b/app/src/main/java/com/futo/circles/di/UiModule.kt
@@ -9,6 +9,6 @@ import org.koin.dsl.module
 
 val uiModule = module {
     viewModel { LogInViewModel(get()) }
-    viewModel { GroupsViewModel(get()) }
+    viewModel { GroupsViewModel() }
     viewModel { (roomId: String) -> GroupTimelineViewModel(get { parametersOf(roomId) }) }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt b/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt
deleted file mode 100644
index 936152647fbdd5a51094233538d46da1094a31a4..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.futo.circles.provider
-
-import android.net.Uri
-import com.futo.circles.BuildConfig
-import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
-
-class MatrixHomeServerProvider {
-
-    fun createHomeServerConfig() =
-        HomeServerConnectionConfig
-            .Builder()
-            .withHomeServerUri(Uri.parse(BuildConfig.MATRIX_HOME_SERVER_URL))
-            .build()
-
-}
diff --git a/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt b/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt
index a0b313431dd17234c33a0208f6e2bfe28bec6d68..60bd6f9f5171f6d33834ea670bf08cd4233fd6dc 100644
--- a/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt
+++ b/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt
@@ -8,13 +8,10 @@ import com.futo.circles.utils.GROUP_TAG
 import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
 
 
-class GroupsViewModel(
-    private val matrixSessionProvider: MatrixSessionProvider
-) : ViewModel() {
+class GroupsViewModel : ViewModel() {
 
     val groupsLiveData =
-        matrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams())
+        MatrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams())
             ?.map { list -> list.toGroupsList(GROUP_TAG) }
 
-    fun getContentResolver() = matrixSessionProvider.currentSession?.contentUrlResolver()
 }
diff --git a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
index f27d1fd318dfc53bbf7270736e9cb595acbe3888..6c0d0bb9ae09625e66b4fcd0fa7368dfb59f7b87 100644
--- a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
+++ b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt
@@ -7,16 +7,14 @@ import com.futo.circles.R
 import com.futo.circles.base.ViewBindingHolder
 import com.futo.circles.base.context
 import com.futo.circles.databinding.GroupListItemBinding
-import com.futo.circles.extensions.loadMatrixThumbnail
+import com.futo.circles.extensions.loadImage
 import com.futo.circles.extensions.onClick
 import com.futo.circles.extensions.setIsEncryptedIcon
 import com.futo.circles.model.GroupListItem
 import com.futo.circles.model.GroupListItemPayload
-import org.matrix.android.sdk.api.session.content.ContentUrlResolver
 
 class GroupViewHolder(
     parent: ViewGroup,
-    private val urlResolver: ContentUrlResolver?,
     onGroupClicked: (Int) -> Unit
 ) : RecyclerView.ViewHolder(inflate(parent, GroupListItemBinding::inflate)) {
 
@@ -30,7 +28,7 @@ class GroupViewHolder(
 
     fun bind(data: GroupListItem) {
         with(binding) {
-            ivGroup.loadMatrixThumbnail(data.avatarUrl, urlResolver)
+            ivGroup.loadImage(data.avatarUrl, ivGroup.height)
 
             ivLock.setIsEncryptedIcon(data.isEncrypted)
 
diff --git a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
index af5a82640a1a21d47ed55a8c4e4fb054ca4a9d33..4bda5a906c690681764420b4c2438f65b8728eab 100644
--- a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
+++ b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt
@@ -6,22 +6,21 @@ import androidx.recyclerview.widget.RecyclerView
 import com.futo.circles.base.ViewBindingHolder
 import com.futo.circles.databinding.ImagePostViewBinding
 import com.futo.circles.databinding.TextPostViewBinding
-import com.futo.circles.extensions.loadMatrixThumbnail
+import com.futo.circles.extensions.loadEncryptedImage
 import com.futo.circles.model.ImageContent
 import com.futo.circles.model.Post
 import com.futo.circles.model.PostItemPayload
 import com.futo.circles.model.TextContent
 import com.futo.circles.ui.view.GroupPostListener
 import com.futo.circles.ui.view.PostLayout
-import org.matrix.android.sdk.api.session.content.ContentUrlResolver
 
-sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrlResolver?) :
+sealed class GroupPostViewHolder(view: View) :
     RecyclerView.ViewHolder(view) {
 
     abstract val postLayout: PostLayout
 
     open fun bind(post: Post) {
-        postLayout.setData(post, urlResolver)
+        postLayout.setData(post)
     }
 
     fun bindPayload(payload: PostItemPayload) {
@@ -31,9 +30,8 @@ sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrl
 
 class TextPostViewHolder(
     parent: ViewGroup,
-    postListener: GroupPostListener,
-    private val urlResolver: ContentUrlResolver?
-) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate), urlResolver) {
+    postListener: GroupPostListener
+) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate)) {
 
     private companion object : ViewBindingHolder
 
@@ -55,9 +53,8 @@ class TextPostViewHolder(
 
 class ImagePostViewHolder(
     parent: ViewGroup,
-    postListener: GroupPostListener,
-    private val urlResolver: ContentUrlResolver?
-) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate), urlResolver) {
+    postListener: GroupPostListener
+) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate)) {
 
     private companion object : ViewBindingHolder
 
@@ -72,7 +69,7 @@ class ImagePostViewHolder(
         super.bind(post)
 
         (post.content as? ImageContent)?.let {
-            binding.ivContent.loadMatrixThumbnail(it.url, urlResolver)
+            binding.ivContent.loadEncryptedImage(it)
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt b/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt
index 2e809484ac6a17cab4b3c8bb803d1e88498ea703..45bb6609b7f882a949a574b44c2e9a5e0e84ce4d 100644
--- a/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt
+++ b/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt
@@ -1,23 +1,20 @@
 package com.futo.circles.ui.log_in.data_source
 
 import android.content.Context
+import android.net.Uri
+import com.futo.circles.BuildConfig
 import com.futo.circles.R
 import com.futo.circles.extensions.createResult
-import com.futo.circles.provider.MatrixHomeServerProvider
 import com.futo.circles.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.Matrix
+import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
 
-class LoginDataSource(
-    private val context: Context,
-    private val matrixSessionProvider: MatrixSessionProvider
-) {
+class LoginDataSource(private val context: Context) {
 
     suspend fun logIn(name: String, password: String, secondPassword: String?) =
         createResult {
-            val homeServerConnectionConfig = MatrixHomeServerProvider().createHomeServerConfig()
-
             Matrix.getInstance(context).authenticationService().directAuthentication(
-                homeServerConnectionConfig = homeServerConnectionConfig,
+                homeServerConnectionConfig = createHomeServerConfig(),
                 matrixId = name,
                 password = password,
                 deviceId = secondPassword,
@@ -25,6 +22,12 @@ class LoginDataSource(
                     R.string.initial_device_name,
                     context.getString(R.string.app_name)
                 )
-            ).also { matrixSessionProvider.startSession(it) }
+            ).also { MatrixSessionProvider.startSession(it) }
         }
+
+    private fun createHomeServerConfig() =
+        HomeServerConnectionConfig
+            .Builder()
+            .withHomeServerUri(Uri.parse(BuildConfig.MATRIX_HOME_SERVER_URL))
+            .build()
 }
\ No newline at end of file