diff --git a/ring-android/app/src/main/java/cx/ring/account/RenameSwarmDialog.kt b/ring-android/app/src/main/java/cx/ring/account/RenameSwarmDialog.kt
index 6087e58b25bc4cd4017e63b514eeea99c482d928..28b4a2c517c925bfc85cbdf78e6661b49e10c895 100644
--- a/ring-android/app/src/main/java/cx/ring/account/RenameSwarmDialog.kt
+++ b/ring-android/app/src/main/java/cx/ring/account/RenameSwarmDialog.kt
@@ -94,25 +94,9 @@ class RenameSwarmDialog : DialogFragment() {
         super.onDestroy()
     }
 
-    private fun checkInput(input: String): Boolean {
-        if (input.isEmpty()) {
-            binding?.apply {
-                titleTxtBox.isErrorEnabled = true
-                titleTxtBox.error = getString(R.string.rename_error)
-            }
-            return false
-        } else {
-            binding?.apply {
-                titleTxtBox.isErrorEnabled = false
-                titleTxtBox.error = null
-            }
-        }
-        return true
-    }
-
     private fun validate(): Boolean {
         val input = binding!!.titleTxt.text.toString().trim { it <= ' ' }
-        if (checkInput(input) && mListener != null) {
+        if (mListener != null) {
             mListener!!.onSwarmRename(key!!, input)
             return true
         }
diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ContactPickerAdapter.kt b/ring-android/app/src/main/java/cx/ring/adapters/ContactPickerAdapter.kt
index 6847c7ea424a26c69ff9cfc9ee0358a132ea7c7c..40bd84ec987e243a54b50ba8acd6c6a61602631b 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ContactPickerAdapter.kt
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ContactPickerAdapter.kt
@@ -23,7 +23,7 @@ import android.annotation.SuppressLint
 import android.view.LayoutInflater
 import android.view.ViewGroup
 import androidx.recyclerview.widget.RecyclerView
-import cx.ring.databinding.ItemSmartlistBinding
+import cx.ring.databinding.ItemContactBinding
 import cx.ring.viewholders.ContactPickerViewHolder
 import cx.ring.viewholders.ContactPickerViewHolder.ContactPickerListeners
 import net.jami.smartlist.ConversationItemViewModel
@@ -36,7 +36,7 @@ class ContactPickerAdapter(
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContactPickerViewHolder {
         val layoutInflater = LayoutInflater.from(parent.context)
-        return ContactPickerViewHolder(ItemSmartlistBinding.inflate(layoutInflater, parent, false))
+        return ContactPickerViewHolder(ItemContactBinding.inflate(layoutInflater, parent, false))
     }
 
     override fun onViewRecycled(holder: ContactPickerViewHolder) {
diff --git a/ring-android/app/src/main/java/cx/ring/client/ContactDetailsActivity.kt b/ring-android/app/src/main/java/cx/ring/client/ContactDetailsActivity.kt
index e7dbc91b61f20dad58362cb8d4b78fef16b44726..f2c736983a333d98c9d80a5e3c3594e017d6ea4d 100644
--- a/ring-android/app/src/main/java/cx/ring/client/ContactDetailsActivity.kt
+++ b/ring-android/app/src/main/java/cx/ring/client/ContactDetailsActivity.kt
@@ -132,7 +132,10 @@ class ContactDetailsActivity : AppCompatActivity(), TabLayout.OnTabSelectedListe
                     .withCircleCrop(true)
                     .build(this))
                 binding.title.text = vm.title
-                if (conversation.getDescription() != null) binding.description.text = conversation.getDescription()
+                if (conversation.getDescription().isNullOrBlank())
+                    binding.description.text = getString(R.string.swarm_description)
+                else
+                    binding.description.text = conversation.getDescription()
             }) { e ->
                 Log.e(TAG, "e", e)
                 finish()
@@ -148,27 +151,32 @@ class ContactDetailsActivity : AppCompatActivity(), TabLayout.OnTabSelectedListe
             binding.description.isVisible = true
             binding.addMember.setOnClickListener { ContactPickerFragment().show(supportFragmentManager, ContactPickerFragment.TAG) }
             binding.title.setOnClickListener {
+                val title = getString(R.string.dialogtitle_title)
+                val hint = getString(R.string.dialog_hint_title)
                 RenameSwarmDialog().apply {
                     arguments = Bundle().apply { putString(RenameSwarmDialog.KEY, RenameSwarmDialog.KEY_TITLE) }
-                    setTitle(getString(R.string.dialogtitle_title))
-                    setHint(getString(R.string.dialog_hint_title))
-                    setText(binding.title.text.toString())
+                    setTitle(title)
+                    setHint(hint)
+                    setText(conversation.getTitle())
                     setListener(this@ContactDetailsActivity)
                 }.show(supportFragmentManager, TAG)
             }
             binding.description.setOnClickListener {
+                val title = getString(R.string.dialogtitle_description)
+                val hint = getString(R.string.dialog_hint_description)
                 RenameSwarmDialog().apply {
                     arguments = Bundle().apply { putString(RenameSwarmDialog.KEY, RenameSwarmDialog.KEY_DESCRIPTION) }
-                    setTitle(getString(R.string.dialogtitle_description))
-                    setHint(getString(R.string.dialog_hint_description))
+                    setTitle(title)
+                    setHint(hint)
                     setText(conversation.getDescription())
                     setListener(this@ContactDetailsActivity)
                 }.show(supportFragmentManager, TAG)
             }
+        } else {
+            binding.tabLayout.removeTabAt(TAB_MEMBER)
         }
 
-
-        mPagerAdapter = ScreenSlidePagerAdapter(this, conversation.accountId, conversation.uri)
+        mPagerAdapter = ScreenSlidePagerAdapter(this, conversation)
         binding.pager.adapter = mPagerAdapter
         binding.pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
             override fun onPageSelected(position: Int) {
@@ -246,13 +254,21 @@ class ContactDetailsActivity : AppCompatActivity(), TabLayout.OnTabSelectedListe
         mAccountService.updateConversationInfo(path!!.accountId, path!!.conversationUri.host, map)
     }
 
-    private inner class ScreenSlidePagerAdapter(fa: FragmentActivity, accountId: String, conversationId: Uri) : FragmentStateAdapter(fa) {
-        val fragments: List<Fragment> = listOf(
+    private inner class ScreenSlidePagerAdapter(fa: FragmentActivity, conversation: Conversation) : FragmentStateAdapter(fa) {
+
+        val accountId = conversation.accountId
+        val conversationId = conversation.uri
+        val isGroup = conversation.isGroup()
+
+        val fragments: List<Fragment> = if (isGroup) listOf(
             ConversationActionsFragment.newInstance(accountId, conversationId),
             ConversationMembersFragment.newInstance(accountId, conversationId),
             ConversationGalleryFragment.newInstance(accountId, conversationId))
+        else listOf(
+            ConversationActionsFragment.newInstance(accountId, conversationId),
+            ConversationGalleryFragment.newInstance(accountId, conversationId))
 
-            override fun getItemCount(): Int = fragments.size
+        override fun getItemCount(): Int = fragments.size
 
         override fun createFragment(position: Int): Fragment = fragments[position]
     }
diff --git a/ring-android/app/src/main/java/cx/ring/viewholders/ContactPickerViewHolder.kt b/ring-android/app/src/main/java/cx/ring/viewholders/ContactPickerViewHolder.kt
index 04947a7223f9bb9bede10ea934b7be2e8d8faabb..bf090689d1cbc94ece22b70eabde0ee861d976f8 100644
--- a/ring-android/app/src/main/java/cx/ring/viewholders/ContactPickerViewHolder.kt
+++ b/ring-android/app/src/main/java/cx/ring/viewholders/ContactPickerViewHolder.kt
@@ -21,15 +21,16 @@ package cx.ring.viewholders
 
 import android.view.animation.AlphaAnimation
 import android.view.animation.DecelerateInterpolator
+import androidx.core.view.isVisible
 import androidx.recyclerview.widget.RecyclerView
-import cx.ring.databinding.ItemSmartlistBinding
+import cx.ring.databinding.ItemContactBinding
 import cx.ring.views.AvatarDrawable
 import net.jami.model.*
 import net.jami.smartlist.ConversationItemViewModel
 
-class ContactPickerViewHolder(b: ItemSmartlistBinding) :
+class ContactPickerViewHolder(b: ItemContactBinding) :
     RecyclerView.ViewHolder(b.root) {
-    private val binding: ItemSmartlistBinding = b
+    private val binding: ItemContactBinding = b
     private var currentUri: Uri? = null
 
     private fun fadeIn() = AlphaAnimation(0f, 1f).apply {
@@ -40,9 +41,7 @@ class ContactPickerViewHolder(b: ItemSmartlistBinding) :
     fun bind(clickListener: ContactPickerListeners, conversation: ConversationItemViewModel) {
         if (conversation.uri != currentUri) {
             currentUri = conversation.uri
-            binding.convLastItem.text = ""
-            binding.convLastTime.text = ""
-            binding.convParticipant.text = ""
+            binding.quickCall.isVisible = false
             binding.photo.setImageDrawable(null)
         }
 
@@ -52,7 +51,7 @@ class ContactPickerViewHolder(b: ItemSmartlistBinding) :
             true
         }
 
-        binding.convParticipant.text = conversation.title
+        binding.displayName.text = conversation.title
         val fade = binding.photo.drawable !is AvatarDrawable
         binding.photo.setImageDrawable(AvatarDrawable.Builder()
             .withViewModel(conversation)
diff --git a/ring-android/app/src/main/res/layout/activity_contact_details.xml b/ring-android/app/src/main/res/layout/activity_contact_details.xml
index 9ed66de82e34b66a1e62fdd0293a9abd5e0dc95d..e61d79f5b4f41d6913f05054bd3ac0605e02fb95 100644
--- a/ring-android/app/src/main/res/layout/activity_contact_details.xml
+++ b/ring-android/app/src/main/res/layout/activity_contact_details.xml
@@ -50,10 +50,8 @@
                 android:layout_height="wrap_content"
                 android:layout_below="@id/contact_image"
                 android:layout_centerHorizontal="true"
-                android:layout_marginStart="22dp"
-                android:layout_marginTop="22dp"
-                android:layout_marginEnd="22dp"
-                android:layout_marginBottom="22dp"
+                android:layout_margin="15dp"
+                android:padding="5dp"
                 android:ellipsize="end"
                 android:fontFamily="@font/ubuntu_medium"
                 android:maxLines="1"
diff --git a/ring-android/app/src/main/res/layout/frag_about.xml b/ring-android/app/src/main/res/layout/frag_about.xml
index 20e3f3fcd242354d99fe85d6fab1b6f4404b8488..8b6d2561b309a02549b9d0736648fc60d13a9d13 100644
--- a/ring-android/app/src/main/res/layout/frag_about.xml
+++ b/ring-android/app/src/main/res/layout/frag_about.xml
@@ -39,6 +39,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
             app:title="@string/menu_item_about" />
     </com.google.android.material.appbar.AppBarLayout>
 
+    <RelativeLayout
+        android:fitsSystemWindows="true"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="?attr/actionBarSize">
+
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -306,6 +312,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
         </LinearLayout>
     </androidx.core.widget.NestedScrollView>
 
+    </RelativeLayout>
+
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
 
diff --git a/ring-android/app/src/main/res/layout/frag_account_settings.xml b/ring-android/app/src/main/res/layout/frag_account_settings.xml
index db6f6ea7c15da1531494d872bc3426cf4cafddc5..e737ec0f9b9af805013a5edca297adb5d81de395 100644
--- a/ring-android/app/src/main/res/layout/frag_account_settings.xml
+++ b/ring-android/app/src/main/res/layout/frag_account_settings.xml
@@ -28,18 +28,25 @@
             android:layout_below="@id/toolbar" />
     </com.google.android.material.appbar.AppBarLayout>
 
-    <androidx.viewpager.widget.ViewPager
-        android:id="@+id/pager"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_alignParentBottom="true"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
-
-    <FrameLayout
-        android:id="@+id/fragment_container"
+    <RelativeLayout
+        android:fitsSystemWindows="true"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+        android:layout_height="wrap_content"
+        android:layout_marginTop="?attr/actionBarSize">
+
+        <androidx.viewpager.widget.ViewPager
+            android:id="@+id/pager"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentBottom="true"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+
+        <FrameLayout
+            android:id="@+id/fragment_container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
 
+    </RelativeLayout>
 
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_settings.xml b/ring-android/app/src/main/res/layout/frag_settings.xml
index 73306d39d1353330a9f31abc24c4045ddf7aaa35..693a45294dc253ef48d3bf821cd700a584da79f7 100644
--- a/ring-android/app/src/main/res/layout/frag_settings.xml
+++ b/ring-android/app/src/main/res/layout/frag_settings.xml
@@ -41,6 +41,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
     </com.google.android.material.appbar.AppBarLayout>
 
+    <RelativeLayout
+        android:fitsSystemWindows="true"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="?attr/actionBarSize">
+
     <androidx.core.widget.NestedScrollView
         android:id="@+id/scrollview"
         android:layout_width="match_parent"
@@ -780,4 +786,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
         android:visibility="gone"
         app:layout_behavior="@string/appbar_scrolling_view_behavior" />
 
+    </RelativeLayout>
+
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/ring-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt b/ring-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt
index b2fe3414b1122a921aabcba18021d5d67a579b66..9ef68e172e7dfcb24c934d2cd0e75399e3dd3a9a 100644
--- a/ring-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt
+++ b/ring-android/libjamiclient/src/main/kotlin/net/jami/model/Conversation.kt
@@ -59,6 +59,7 @@ class Conversation : ConversationHistory {
         private set
     private val mMode: Subject<Mode>
     private var description: String? = null
+    private var title: String? = null
 
     private val profileSubject: Subject<Single<Profile>> = BehaviorSubject.createDefault(Profile.EMPTY_PROFILE_SINGLE)
     val profile: Observable<Profile> = profileSubject.switchMapSingle { single -> single }
@@ -640,7 +641,7 @@ class Conversation : ConversationHistory {
     fun getSymbol(): Observable<CharSequence> = symbol
 
     fun updateInfo(info: Map<String, String>) {
-        //title = info["title"]
+        title = info["title"]
         //avatar = info["avatar"]
         setProfile(Profile(info["title"], info["avatar"]))
         description = info["description"]
@@ -651,7 +652,7 @@ class Conversation : ConversationHistory {
         preferences["symbol"]?.let { symbol.onNext(it) }
     }
 
-    //fun getTitle() = title
+    fun getTitle() = title
     fun getDescription() = description
     fun isGroup(): Boolean = isSwarm && contacts.size > 2
     @Synchronized