diff --git a/fmapp2/res/layout/statusbar.xml b/fmapp2/res/layout/statusbar.xml
deleted file mode 100644
index 47e1a91..0000000
--- a/fmapp2/res/layout/statusbar.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2012, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimer in the documentation and/or other materials provided
- *       with the distribution.
- *     * Neither the name of The Linux Foundation, Inc. nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:orientation="horizontal">
-
-    <ImageView android:id="@+id/icon"
-        android:layout_gravity="center_vertical"
-        android:paddingLeft="10dp"
-        android:paddingRight="10dp"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-    </ImageView>
-
-    <TextView android:id="@+id/frequency"
-        android:textAppearance="?android:attr/textAppearanceMediumInverse"
-        android:textColor="@android:color/black"
-        android:focusable="true"
-        android:ellipsize="marquee"
-        android:singleLine="true"
-        android:layout_gravity="center"
-        android:layout_width="wrap_content"
-       android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/fmapp2/res/values/strings.xml b/fmapp2/res/values/strings.xml
index b37fe27..788e744 100644
--- a/fmapp2/res/values/strings.xml
+++ b/fmapp2/res/values/strings.xml
@@ -62,7 +62,7 @@
     <string name="preset_delete">Delete</string>
     <string name="preset_search">Search for \'<xliff:g id="preset_pi">%1$s</xliff:g>\'</string>
 
-    <string name="stat_notif_frequency">FM Radio Station \'<xliff:g id="frequency">%1$s</xliff:g>\' MHz</string>
+    <string name="stat_notif_frequency">\'<xliff:g id="frequency">%1$s</xliff:g>\' MHz</string>
 
     <string name="regional_band">Regional band</string>
 
diff --git a/fmapp2/res/values/transmit_strings.xml b/fmapp2/res/values/transmit_strings.xml
index e6531b6..566af1d 100644
--- a/fmapp2/res/values/transmit_strings.xml
+++ b/fmapp2/res/values/transmit_strings.xml
@@ -34,7 +34,7 @@
     <string name="msg_callactive">FM transmit is not supported when there is an active voice call</string>
     <string name="fmtx_autoselect_name">Auto-select will delete all the presets, continue?</string>
 
-    <string name="stat_notif_tx_frequency">FM Transmitting at: \'<xliff:g id="frequency">%1$s</xliff:g>\' MHz</string>
+    <string name="stat_notif_tx_frequency">Transmitting at: \'<xliff:g id="frequency">%1$s</xliff:g>\' MHz</string>
 
     <string name="transmit_msg_string">Transmitting at:</string>
 </resources>
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index cb1bd85..ab33b8a 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -1718,15 +1718,6 @@
       Log.d(LOGTAG,"startNotification");
 
       synchronized (mNotificationLock) {
-          RemoteViews views = new RemoteViews(getPackageName(), R.layout.statusbar);
-          views.setImageViewResource(R.id.icon, R.drawable.stat_notify_fm);
-          if (isFmOn())
-          {
-              views.setTextViewText(R.id.frequency, getTunedFrequencyString());
-          } else {
-             views.setTextViewText(R.id.frequency, "");
-          }
-
           Context context = getApplicationContext();
           Notification notification;
           NotificationManager notificationManager =
@@ -1739,8 +1730,9 @@
           notificationManager.createNotificationChannel(notificationChannel);
 
           notification = new Notification.Builder(context, FMRADIO_NOTIFICATION_CHANNEL)
-            .setCustomContentView(views)
             .setSmallIcon(R.drawable.stat_notify_fm)
+            .setContentTitle(isFmOn() ? getString(R.string.app_name) : "")
+            .setContentText(isFmOn() ? getTunedFrequencyString() : "")
             .setContentIntent(PendingIntent.getActivity(this,
                 0, new Intent("com.caf.fmradio.FMRADIO_ACTIVITY"), 0))
             .setOngoing(true)
