diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml
index b57eab0..0071142 100644
--- a/ring-android/app/src/main/AndroidManifest.xml
+++ b/ring-android/app/src/main/AndroidManifest.xml
@@ -272,8 +272,8 @@
             android:icon="@drawable/ic_launcher"
             android:label="@string/title_activity_sflphone_home"
             android:logo="@drawable/ic_launcher"
-            android:theme="@style/AppThemeBase"
-            android:screenOrientation="landscape">
+            android:screenOrientation="landscape"
+            android:theme="@style/AppThemeBase">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
@@ -282,8 +282,8 @@
         <activity
             android:name=".tv.main.HomeActivity"
             android:label="@string/title_activity_sflphone_home"
-            android:theme="@style/Theme.Leanback"
-            android:screenOrientation="landscape"/>
+            android:screenOrientation="landscape"
+            android:theme="@style/Theme.Ring.Leanback.CustomTitle" />
         <activity
             android:name=".tv.account.TVAccountWizard"
             android:configChanges="screenSize|screenLayout|smallestScreenSize"
@@ -291,8 +291,9 @@
             android:screenOrientation="fullUser"
             android:theme="@style/AppThemeBase" />
 
-        <activity android:name="cx.ring.tv.search.SearchActivity"
-            android:theme="@style/Theme.Leanback"/>
+        <activity
+            android:name="cx.ring.tv.search.SearchActivity"
+            android:theme="@style/Theme.Leanback" />
 
         <activity
             android:name="cx.ring.tv.call.TVCallActivity"
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
index 6e30cfe..6cde631 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
@@ -40,12 +40,11 @@
 
 public class MainFragment extends BaseBrowseFragment<MainPresenter> implements MainView {
     private static final String TAG = MainFragment.class.getSimpleName();
-
+    SpinnerFragment mSpinnerFragment;
     private ArrayObjectAdapter mRowsAdapter;
     private DisplayMetrics mMetrics;
     private BackgroundManager mBackgroundManager;
     private ArrayObjectAdapter cardRowAdapter;
-    SpinnerFragment mSpinnerFragment;
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -63,6 +62,7 @@
     public void onResume() {
         super.onResume();
         presenter.reloadConversations();
+        presenter.reloadAccountInfos();
     }
 
     private void setupUIElements() {
@@ -70,7 +70,6 @@
         mBackgroundManager.attach(getActivity().getWindow());
         mMetrics = new DisplayMetrics();
         getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics);
-        setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_ring_logo_white));
         // over title
         setHeadersState(HEADERS_ENABLED);
         setHeadersTransitionOnBackEnabled(true);
@@ -136,6 +135,20 @@
         getActivity().startActivity(intent, null);
     }
 
+    @Override
+    public void displayAccountInfos(final String address) {
+        getActivity().runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                if (address != null) {
+                    setTitle(address);
+                } else {
+                    setTitle("");
+                }
+            }
+        });
+    }
+
     private final class ItemViewClickedListener implements OnItemViewClickedListener {
         @Override
         public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
index 2e4a65e..b7ff819 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
@@ -26,6 +26,7 @@
 import javax.inject.Named;
 
 import cx.ring.facades.ConversationFacade;
+import cx.ring.model.Account;
 import cx.ring.model.CallContact;
 import cx.ring.model.Conversation;
 import cx.ring.model.ServiceEvent;
@@ -93,6 +94,10 @@
             case CONVERSATIONS_CHANGED:
                 reloadConversations();
                 break;
+            case ACCOUNTS_CHANGED:
+            case NAME_REGISTRATION_ENDED:
+                reloadAccountInfos();
+                break;
         }
     }
 
@@ -124,4 +129,11 @@
         getView().callContact(accountID, ringID);
     }
 
+    public void reloadAccountInfos() {
+        String displayableAddress = null;
+        for (Account account : mAccountService.getAccounts()) {
+            displayableAddress = account.getDisplayUri();
+        }
+        getView().displayAccountInfos(displayableAddress);
+    }
 }
\ No newline at end of file
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
index e007f4c..9b49062 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
@@ -30,4 +30,6 @@
     void showContacts(ArrayList<CallContact> contacts);
 
     void callContact(String accountID, String ringID);
+
+    void displayAccountInfos(String address);
 }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java b/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java
new file mode 100644
index 0000000..35eff17
--- /dev/null
+++ b/ring-android/app/src/main/java/cx/ring/tv/views/CustomTitleView.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package cx.ring.tv.views;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.support.v17.leanback.widget.TitleViewAdapter;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import cx.ring.R;
+
+/**
+ * Custom title view to be used in {@link android.support.v17.leanback.app.BrowseFragment}.
+ */
+public class CustomTitleView extends RelativeLayout implements TitleViewAdapter.Provider {
+    private final TextView mTitleView;
+    private final View mLogoView;
+    private final View mSearchOrbView;
+
+    private final TitleViewAdapter mTitleViewAdapter = new TitleViewAdapter() {
+        @Override
+        public View getSearchAffordanceView() {
+            return mSearchOrbView;
+        }
+
+        @Override
+        public void setTitle(CharSequence titleText) {
+            CustomTitleView.this.setTitle(titleText);
+        }
+
+        @Override
+        public void setBadgeDrawable(Drawable drawable) {
+            //NOOP
+        }
+
+        @Override
+        public void setOnSearchClickedListener(OnClickListener listener) {
+            mSearchOrbView.setOnClickListener(listener);
+        }
+
+        @Override
+        public void updateComponentsVisibility(int flags) {
+            int visibility = (flags & SEARCH_VIEW_VISIBLE) == SEARCH_VIEW_VISIBLE
+                    ? View.VISIBLE : View.INVISIBLE;
+            mSearchOrbView.setVisibility(visibility);
+        }
+
+    };
+
+    public CustomTitleView(Context context) {
+        this(context, null);
+    }
+
+    public CustomTitleView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public CustomTitleView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        View root = LayoutInflater.from(context).inflate(R.layout.tv_titleview, this);
+        mTitleView = (TextView) root.findViewById(R.id.title_text);
+        mLogoView = root.findViewById(R.id.title_badge);
+        mSearchOrbView = root.findViewById(R.id.title_orb);
+
+        setClipChildren(false);
+        setClipToPadding(false);
+    }
+
+    public void setTitle(CharSequence title) {
+        if (title != null) {
+            mTitleView.setText(title);
+            mTitleView.setVisibility(View.VISIBLE);
+            mLogoView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public TitleViewAdapter getTitleViewAdapter() {
+        return mTitleViewAdapter;
+    }
+}
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/titleview.xml b/ring-android/app/src/main/res/layout/titleview.xml
new file mode 100644
index 0000000..ff5662f
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/titleview.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<cx.ring.tv.views.CustomTitleView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/browse_title_group"
+    android:padding="16dp"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" />
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/tv_titleview.xml b/ring-android/app/src/main/res/layout/tv_titleview.xml
new file mode 100644
index 0000000..1172591
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/tv_titleview.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <android.support.v17.leanback.widget.SearchOrbView
+        android:id="@+id/title_orb"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:transitionGroup="true"
+        android:layout_gravity="center_vertical|start"
+        android:layout_marginTop="8dp"
+        android:layout_marginStart="48dp" />
+
+    <TextView
+        android:id="@+id/title_text"
+        android:textAppearance="@android:style/TextAppearance.Large"
+        android:visibility="gone"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="24dp"
+        android:layout_centerVertical="true"
+        android:layout_toStartOf="@id/title_badge" />
+
+    <ImageView
+        android:id="@+id/title_badge"
+        android:layout_width="80dp"
+        android:layout_height="80dp"
+        android:padding="6dp"
+        android:src="@drawable/ic_ring_logo_white"
+        android:layout_alignParentEnd="true"
+        android:layout_gravity="center_vertical|end"
+        android:layout_marginEnd="24dp" />
+</merge>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml
index 706cb34..2fc1874 100644
--- a/ring-android/app/src/main/res/values/styles.xml
+++ b/ring-android/app/src/main/res/values/styles.xml
@@ -100,4 +100,13 @@
         <item name="guidanceIconStyle">@style/Widget.Ring.Leanback.FirstStepGuidanceIconStyle</item>
         <item name="guidedStepBackground">@color/color_primary_light</item>
     </style>
+
+    <style name="Theme.Ring.LeanbackBrowse" parent="Theme.Leanback.Browse">
+        <item name="defaultSearchColor">@color/color_primary_light</item>
+    </style>
+
+    <style name="Theme.Ring.Leanback.CustomTitle" parent="Theme.Ring.LeanbackBrowse">
+        <item name="browseTitleViewLayout">@layout/titleview</item>
+    </style>
+
 </resources>
\ No newline at end of file
