diff --git a/res/drawable/vilte.xml b/res/drawable/vilte.xml
new file mode 100644
index 0000000..7eb7fa2
--- /dev/null
+++ b/res/drawable/vilte.xml
@@ -0,0 +1,41 @@
+<!--Copyright (c) 2016, 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 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. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="36dp"
+    android:height="36dp"
+    android:viewportHeight="42.0"
+    android:viewportWidth="42.0">
+    <path
+        android:fillColor="#404040"
+        android:pathData="M25.6,20.4c-0.8,0 -1.5,-0.1 -2.3,-0.4c-0.2,-0.1 -0.5,0 -0.6,0.1l-1.4,1.4c-1.8,-0.9 -3.2,-2.3 -4.1,-4.1l1.4,-1.4c0.2,-0.2 0.2,-0.4 0.2,-0.6c-0.2,-0.7 -0.4,-1.5 -0.4,-2.2c0,-0.3 -0.3,-0.6 -0.6,-0.6l0,0h-2.2c-0.3,0 -0.6,0.3 -0.6,0.6c0,5.8 4.7,10.6 10.6,10.6c0.3,0 0.6,-0.3 0.6,-0.6v0v-2.2C26.2,20.7 26,20.4 25.6,20.4C25.6,20.4 25.6,20.4 25.6,20.4zM25.6,14.7v-1c0,-0.2 -0.1,-0.3 -0.3,-0.3l0,0h-3.4c-0.2,0 -0.3,0.1 -0.3,0.3v0v2.9c0,0.2 0.1,0.3 0.3,0.3h0h3.4c0.2,0 0.3,-0.1 0.3,-0.3v0v-1l1.1,1.2v-3.3L25.6,14.7z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9,18c0,-6.6 5.4,-12 12,-12s12,5.4 12,12c0,3.4 -1.4,6.6 -3.9,8.9h1.4c4.9,-5.2 4.6,-13.5 -0.6,-18.4S16.4,3.9 11.5,9.1c-4.7,5 -4.7,12.8 0,17.7h1.4C10.4,24.6 9,21.4 9,18z" />
+    <path
+        android:fillColor="#FD6F43"
+        android:pathData="M35,26.8H7c-1.1,0 -2,0.9 -2,2V35c0,1.1 0.9,2 2,2h28c1.1,0 2,-0.9 2,-2v-6.2C37,27.7 36.1,26.8 35,26.8zM13,35.3h-1.4l-2.3,-6.5h1.5l1.5,4.9l1.5,-4.9h1.5L13,35.3zM17.2,35.3h-1.3v-4.8h1.3L17.2,35.3zM17.2,29.5c0,0.1 -0.1,0.2 -0.1,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.2,0.1 -0.4,0.1 -0.6,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.1,-0.2c0,-0.1 0,-0.2 0,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1c0.1,0.1 0.1,0.1 0.1,0.2C17.3,29.1 17.3,29.3 17.2,29.5L17.2,29.5zM22.6,35.3h-4.2v-6.5h1.4v5.4h2.9L22.6,35.3zM27.4,29.9h-2v5.4h-1.3v-5.4h-2v-1.1h5.4L27.4,29.9zM32.6,29.9h-3v1.6h2.6v1h-2.6v1.7h3v1.1h-4.3v-6.5h4.4L32.6,29.9z" />
+</vector>
diff --git a/res/drawable/viwifi.xml b/res/drawable/viwifi.xml
new file mode 100644
index 0000000..c74ec76
--- /dev/null
+++ b/res/drawable/viwifi.xml
@@ -0,0 +1,41 @@
+<!--Copyright (c) 2016, 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 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. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="36dp"
+    android:height="36dp"
+    android:viewportHeight="42.0"
+    android:viewportWidth="42.0">
+    <path
+        android:fillColor="#404040"
+        android:pathData="M25.8,20.4c-0.8,0 -1.5,-0.1 -2.3,-0.4c-0.2,-0.1 -0.5,0 -0.6,0.1l-1.4,1.4c-1.8,-0.9 -3.2,-2.3 -4.1,-4.1l1.4,-1.4c0.2,-0.2 0.2,-0.4 0.2,-0.6c-0.2,-0.7 -0.4,-1.5 -0.4,-2.2c0,-0.3 -0.3,-0.6 -0.6,-0.6l0,0h-2.2c-0.3,0 -0.6,0.3 -0.6,0.6c0,5.8 4.7,10.6 10.6,10.6c0.3,0 0.6,-0.3 0.6,-0.6v0v-2.2C26.4,20.7 26.2,20.4 25.8,20.4C25.8,20.4 25.8,20.4 25.8,20.4zM25.8,14.7v-1c0,-0.2 -0.1,-0.3 -0.3,-0.3l0,0H22c-0.2,0 -0.3,0.1 -0.3,0.3v0v2.9c0,0.2 0.1,0.3 0.3,0.3h0h3.4c0.2,0 0.3,-0.1 0.3,-0.3v0v-1l1.1,1.2v-3.3L25.8,14.7z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9.2,18c0,-6.6 5.4,-12 12,-12s12,5.4 12,12c0,3.4 -1.4,6.6 -3.9,8.9h1.4c4.9,-5.2 4.6,-13.5 -0.6,-18.4S16.6,3.9 11.7,9.1c-4.7,5 -4.7,12.8 0,17.7h1.4C10.6,24.6 9.2,21.4 9.2,18z" />
+    <path
+        android:fillColor="#FD6F43"
+        android:pathData="M35.2,26.8h-28c-1.1,0 -2,0.9 -2,2V35c0,1.1 0.9,2 2,2h28c1.1,0 2,-0.9 2,-2v-6.2C37.2,27.7 36.3,26.8 35.2,26.8zM11.9,35.3h-1.4l-2.3,-6.5h1.5l1.5,4.9l1.5,-4.9h1.5L11.9,35.3zM16.1,35.3h-1.3v-4.8h1.3L16.1,35.3zM16.1,29.5c0,0.1 -0.1,0.2 -0.1,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.2,0.1 -0.4,0.1 -0.6,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.1,-0.2c0,-0.1 0,-0.2 0,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1c0.1,0.1 0.1,0.1 0.2,0.2C16.2,29.1 16.2,29.3 16.1,29.5L16.1,29.5zM23.1,35.3h-1.3l-1.1,-4.4l-1.1,4.4h-1.4l-1.5,-6.5h1.4l0.9,4.6l1.1,-4.6h1.1l1.1,4.6l0.9,-4.6h1.4L23.1,35.3zM26.6,35.3h-1.3v-4.8h1.3L26.6,35.3zM26.6,29.5c0,0.1 -0.1,0.2 -0.1,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.1,0 -0.2,0 -0.3,0c-0.1,0 -0.2,0 -0.3,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.1,-0.2c0,-0.1 0,-0.2 0,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1C26.6,28.9 26.7,29.2 26.6,29.5L26.6,29.5zM32,29.9h-2.8v1.7h2.6v1.1h-2.6v2.7h-1.4v-6.5h4.3L32,29.9zM34.1,35.3h-1.2v-4.8h1.3L34.1,35.3zM34.1,29.5c0,0.1 -0.1,0.2 -0.2,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.2,0.1 -0.4,0.1 -0.6,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.2,-0.2c0,-0.1 0,-0.2 0,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1c0.1,0.1 0.1,0.1 0.2,0.2C34.2,29.1 34.2,29.3 34.1,29.5L34.1,29.5z" />
+</vector>
diff --git a/res/drawable/volte.xml b/res/drawable/volte.xml
new file mode 100644
index 0000000..eb811bf
--- /dev/null
+++ b/res/drawable/volte.xml
@@ -0,0 +1,41 @@
+<!--Copyright (c) 2016, 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 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. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="36dp"
+    android:height="36dp"
+    android:viewportHeight="42.0"
+    android:viewportWidth="42.0">
+    <path
+        android:fillColor="#404040"
+        android:pathData="M26.6,20.4c-0.8,0 -1.5,-0.1 -2.3,-0.4c-0.2,-0.1 -0.5,0 -0.6,0.1l-1.4,1.4c-1.8,-0.9 -3.2,-2.3 -4.1,-4.1l1.4,-1.4c0.2,-0.2 0.2,-0.4 0.2,-0.6c-0.2,-0.7 -0.4,-1.5 -0.4,-2.2c0,-0.3 -0.3,-0.6 -0.6,-0.6l0,0h-2.2c-0.3,0 -0.6,0.3 -0.6,0.6c0,0 0,0 0,0c0,5.8 4.7,10.6 10.6,10.6c0.3,0 0.6,-0.3 0.6,-0.6v0v-2.2C27.2,20.7 27,20.4 26.6,20.4C26.6,20.4 26.6,20.4 26.6,20.4z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M8.8,18c0,-6.6 5.4,-12 12,-12s12,5.4 12,12c0,3.4 -1.4,6.6 -3.9,8.9h1.4c4.9,-5.2 4.6,-13.5 -0.6,-18.4S16.2,3.9 11.3,9.1c-4.7,5 -4.7,12.8 0,17.7h1.4C10.2,24.6 8.8,21.4 8.8,18z" />
+    <path
+        android:fillColor="#FD6F43"
+        android:pathData="M17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4zM17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4zM17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4zM17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4zM34.8,26.9h-28c-1.1,0 -2,0.9 -2,2v6.2c0,1.1 0.9,2 2,2h28c1.1,0 2,-0.9 2,-2v-6.2C36.8,27.8 35.9,26.9 34.8,26.9zM11.4,35.4H9.9l-2.3,-6.5h1.5l1.5,4.9l1.5,-4.9h1.5L11.4,35.4zM18.4,33.1c0,0.3 0,0.7 -0.2,1c-0.2,0.6 -0.6,1 -1.2,1.3c-0.3,0.1 -0.7,0.2 -1,0.2c-0.3,0 -0.7,-0.1 -1,-0.2c-0.3,-0.1 -0.5,-0.3 -0.7,-0.5c-0.2,-0.2 -0.4,-0.5 -0.4,-0.8c-0.1,-0.3 -0.2,-0.7 -0.2,-1V33c0,-0.3 0,-0.7 0.2,-1c0.1,-0.3 0.2,-0.6 0.4,-0.8c0.2,-0.2 0.5,-0.4 0.7,-0.5c0.6,-0.2 1.4,-0.2 2,0c0.3,0.1 0.5,0.3 0.7,0.5c0.2,0.2 0.4,0.5 0.5,0.8C18.3,32.3 18.4,32.7 18.4,33.1L18.4,33.1zM23.5,35.4h-4.2v-6.5h1.4v5.4h2.9L23.5,35.4zM28.4,30h-2v5.4H25V30h-2v-1.1h5.4L28.4,30zM33.5,30h-3v1.5h2.6v1h-2.6v1.8h3v1.1h-4.4v-6.4h4.4V30zM16.9,32c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33c0,-0.2 0,-0.4 0,-0.5C17,32.3 17,32.1 16.9,32zM17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4L17.1,32.4zM17.1,32.4c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.2,-0.3 -0.5,-0.4 -0.8,-0.4c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.6c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.4,0.3 1,0.1 1.2,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0,-0.4 0,-0.6V33C17.1,32.8 17.1,32.6 17.1,32.4L17.1,32.4z" />
+</vector>
diff --git a/res/drawable/volte_video.xml b/res/drawable/volte_video.xml
deleted file mode 100644
index 0008559..0000000
--- a/res/drawable/volte_video.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--Copyright (c) 2016, 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 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. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="13dp"
-    android:height="11dp"
-    android:autoMirrored="true"
-    android:viewportHeight="11.0"
-    android:viewportWidth="13.0">
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M6.627,8.712c-0.404,0 -0.992,-0.063 -1.357,-0.185c-0.113,-0.039 -0.244,-0.01 -0.332,0.076L4.221,9.322C3.3,8.85 2.544,7.968 2.076,7.047l0.716,-0.718c0.091,-0.09 0.117,-0.218 0.081,-0.332c-0.12,-0.364 -0.186,-0.755 -0.186,-1.162c0,-0.181 -0.146,-0.326 -0.326,-0.326H1.223c-0.18,0 -0.326,0.146 -0.326,0.326c0,3.058 2.615,5.665 5.672,5.665c0.179,0 0.324,-0.146 0.324,-0.326V9.037C6.895,8.859 6.807,8.712 6.627,8.712zM10.857,0.5H4.212c-0.453,0 -0.683,0.379 -0.683,0.814v6.33c0,0.192 0.05,0.306 0.132,0.465C3.84,8.259 3.928,8.343 4.425,8.343l0.483,-0.483c0.188,-0.186 0.477,-0.254 0.725,-0.17C5.95,7.794 6.286,7.848 6.629,7.848c0.391,0 0.708,0.551 0.708,0.94v0.022h3.595c0.221,0 0.596,-0.19 0.596,-0.554V1.246C11.527,0.893 11.25,0.5 10.857,0.5zM4.561,7.166V1.514h5.972l0.001,5.652H4.561zM7.555,4.229c0.598,0 1.078,-0.48 1.078,-1.078c0,-0.599 -0.48,-1.137 -1.078,-1.137c-0.599,0 -1.08,0.538 -1.08,1.137C6.475,3.748 6.955,4.229 7.555,4.229zM8.178,4.877c-0.121,0 -1.02,-0.027 -1.186,-0.027c-0.506,0 -1.746,0.789 -1.746,0.899v0.76L9.87,6.492V5.746C9.869,5.624 8.504,4.877 8.178,4.877z" />
-</vector>
diff --git a/res/drawable/volte_voice.xml b/res/drawable/volte_voice.xml
deleted file mode 100644
index 1ce76fb..0000000
--- a/res/drawable/volte_voice.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--Copyright (c) 2016, 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 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. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="13dp"
-    android:height="11dp"
-    android:autoMirrored="true"
-    android:viewportHeight="11.0"
-    android:viewportWidth="13.0">
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M8.336,7.479c-0.574,0 -1.091,-0.093 -1.609,-0.264C6.564,7.158 6.379,7.199 6.254,7.326l-1.02,1.021C3.922,7.674 2.848,6.604 2.178,5.291L3.198,4.27c0.129,-0.13 0.167,-0.311 0.116,-0.475C3.143,3.276 3.05,2.586 3.05,2.006c0,-0.256 -0.209,-0.465 -0.464,-0.465H0.964C0.709,1.541 0.5,1.75 0.5,2.006c0,4.353 3.482,8.017 7.836,8.017c0.255,0 0.464,-0.21 0.464,-0.465V7.942C8.8,7.687 8.591,7.479 8.336,7.479zM5.453,4.054l0.689,-2.511H5.604l-0.402,1.82l-0.4,-1.82H4.266L4.95,4.054H5.453zM6.426,3.854c0.063,0.077 0.139,0.135 0.227,0.174c0.09,0.039 0.188,0.06 0.3,0.06c0.108,0 0.208,-0.021 0.296,-0.06c0.089,-0.039 0.165,-0.098 0.227,-0.174c0.063,-0.076 0.11,-0.171 0.145,-0.284c0.033,-0.113 0.05,-0.242 0.05,-0.389V3.059c0,-0.146 -0.019,-0.275 -0.052,-0.389C7.584,2.558 7.536,2.463 7.473,2.386C7.41,2.31 7.336,2.25 7.246,2.211c-0.088,-0.041 -0.188,-0.06 -0.298,-0.06c-0.109,0 -0.208,0.021 -0.296,0.06S6.488,2.31 6.426,2.386C6.364,2.463 6.316,2.558 6.282,2.67C6.248,2.783 6.23,2.912 6.23,3.059v0.123c0,0.146 0.018,0.277 0.052,0.389C6.316,3.684 6.364,3.777 6.426,3.854zM6.697,3.06c0,-0.17 0.021,-0.297 0.066,-0.378C6.809,2.6 6.87,2.558 6.949,2.558c0.082,0 0.145,0.042 0.189,0.124S7.205,2.89 7.205,3.06v0.123c0,0.173 -0.021,0.3 -0.063,0.38c-0.043,0.08 -0.106,0.12 -0.191,0.12c-0.08,0 -0.143,-0.041 -0.188,-0.12c-0.046,-0.08 -0.068,-0.207 -0.068,-0.38V3.06H6.697zM8.479,1.541H7.997v2.512h1.329v-0.42H8.48L8.479,1.541L8.479,1.541zM9.178,1.965h0.58v2.089h0.484V1.965h0.59V1.543H9.177L9.178,1.965L9.178,1.965zM11.609,3.633V2.967h0.75V2.558h-0.75V1.965h0.886V1.543h-1.368v2.511h1.372V3.633H11.609L11.609,3.633z" />
-</vector>
diff --git a/res/drawable/vowifi.xml b/res/drawable/vowifi.xml
new file mode 100644
index 0000000..579af8c
--- /dev/null
+++ b/res/drawable/vowifi.xml
@@ -0,0 +1,41 @@
+<!--Copyright (c) 2016, 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 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. -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="36dp"
+    android:height="36dp"
+    android:viewportHeight="42.0"
+    android:viewportWidth="42.0">
+    <path
+        android:fillColor="#404040"
+        android:pathData="M26.8,20.4c-0.8,0 -1.5,-0.1 -2.3,-0.4c-0.2,-0.1 -0.5,0 -0.6,0.1l-1.4,1.4c-1.8,-0.9 -3.2,-2.3 -4.1,-4.1l1.4,-1.4c0.2,-0.2 0.2,-0.4 0.2,-0.6c-0.2,-0.7 -0.4,-1.5 -0.4,-2.2c0,-0.3 -0.3,-0.6 -0.6,-0.6l0,0h-2.2c-0.3,0 -0.6,0.3 -0.6,0.6c0,0 0,0 0,0c0,5.8 4.7,10.6 10.6,10.6c0.3,0 0.6,-0.3 0.6,-0.6v0v-2.2C27.4,20.7 27.2,20.4 26.8,20.4C26.8,20.4 26.8,20.4 26.8,20.4z" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9,18c0,-6.6 5.4,-12 12,-12s12,5.4 12,12c0,3.4 -1.4,6.6 -3.9,8.9h1.4c4.9,-5.2 4.6,-13.5 -0.6,-18.4S16.4,3.9 11.5,9.1c-4.7,5 -4.7,12.8 0,17.7h1.4C10.4,24.6 9,21.4 9,18z" />
+    <path
+        android:fillColor="#FD6F43"
+        android:pathData="M16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM35,26.8H7c-1.1,0 -2,0.9 -2,2V35c0,1.1 0.9,2 2,2h28c1.1,0 2,-0.9 2,-2v-6.2C37,27.7 36.1,26.8 35,26.8zM10.4,35.3H9l-2.3,-6.5h1.5l1.5,4.9l1.5,-4.9h1.5L10.4,35.3zM17.4,32.9c0,0.3 0,0.7 -0.1,1c-0.1,0.3 -0.2,0.6 -0.5,0.8c-0.2,0.2 -0.4,0.4 -0.7,0.5c-0.6,0.3 -1.4,0.3 -2,0c-0.3,-0.1 -0.5,-0.3 -0.7,-0.5c-0.2,-0.2 -0.3,-0.5 -0.4,-0.8c-0.1,-0.3 -0.2,-0.7 -0.2,-1v-0.1c0,-0.3 0,-0.7 0.2,-1c0.1,-0.3 0.2,-0.6 0.4,-0.8c0.2,-0.2 0.5,-0.4 0.7,-0.5c0.3,-0.1 0.7,-0.2 1,-0.2c0.3,0 0.7,0.1 1,0.2c0.3,0.1 0.5,0.3 0.7,0.5c0.2,0.2 0.4,0.5 0.5,0.8C17.4,32.1 17.4,32.5 17.4,32.9L17.4,32.9zM24.2,35.3h-1.3l-1.1,-4.4l-1.1,4.4h-1.4l-1.5,-6.5h1.4l0.9,4.6l1.1,-4.6h1.1l1.1,4.6l0.9,-4.6h1.4L24.2,35.3zM27.7,35.3h-1.3v-4.8h1.3L27.7,35.3zM27.7,29.4c0,0.1 -0.1,0.2 -0.1,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.2,0.1 -0.4,0.1 -0.6,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.1,-0.2c0,-0.1 -0.1,-0.2 0,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1c0.1,0.1 0.1,0.1 0.1,0.2c0,0.1 0,0.2 0,0.3C27.7,29.3 27.8,29.3 27.7,29.4L27.7,29.4zM33.1,29.8h-2.9v1.7h2.6v1.1h-2.6v2.7h-1.4v-6.5h4.3L33.1,29.8zM35.2,35.3H34v-4.8h1.3L35.2,35.3zM35.2,29.4c0,0.1 -0.1,0.1 -0.2,0.2c-0.1,0.1 -0.1,0.1 -0.2,0.1c-0.1,0 -0.2,0 -0.3,0c-0.1,0 -0.2,0 -0.3,0c-0.1,0 -0.2,-0.1 -0.2,-0.1c-0.1,-0.1 -0.1,-0.1 -0.1,-0.2c0,-0.1 -0.1,-0.2 -0.1,-0.3c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2c0.1,0 0.2,0 0.3,0c0.1,0 0.2,0.1 0.2,0.1c0.1,0.1 0.1,0.1 0.2,0.2c0,0.1 0,0.2 0,0.3C35.3,29.3 35.3,29.3 35.2,29.4L35.2,29.4zM15.9,31.8c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1c0,-0.2 0,-0.4 -0.1,-0.5C16.1,32.1 16,31.9 15.9,31.8zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2zM16.1,32.2c0,-0.2 -0.1,-0.3 -0.2,-0.5c-0.1,-0.1 -0.2,-0.2 -0.3,-0.3c-0.1,-0.1 -0.3,-0.1 -0.5,-0.1c-0.2,0 -0.3,0 -0.5,0.1c-0.1,0.1 -0.2,0.2 -0.3,0.3c-0.1,0.1 -0.1,0.3 -0.2,0.5c0,0.2 0,0.4 0,0.5v0.1c0,0.2 0,0.4 0,0.5c0,0.2 0.1,0.3 0.2,0.5c0.1,0.1 0.2,0.2 0.3,0.3c0.1,0.1 0.3,0.1 0.5,0.1c0.2,0 0.3,0 0.5,-0.1c0.1,-0.1 0.2,-0.2 0.3,-0.3c0.1,-0.1 0.1,-0.3 0.2,-0.5c0,-0.2 0.1,-0.4 0.1,-0.5v-0.1C16.2,32.6 16.1,32.4 16.1,32.2z" />
+</vector>
diff --git a/res/drawable/wifi_calling.xml b/res/drawable/wifi_calling.xml
deleted file mode 100644
index 87849c5..0000000
--- a/res/drawable/wifi_calling.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--Copyright (c) 2016, 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 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. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="13dp"
-    android:height="11dp"
-    android:autoMirrored="true"
-    android:viewportHeight="11.0"
-    android:viewportWidth="13.75">
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M8.608,7.242c-0.598,0 -1.223,-0.095 -1.762,-0.272C6.679,6.912 6.485,6.955 6.354,7.084L5.294,8.146C3.931,7.447 2.813,6.332 2.118,4.97l1.061,-1.062C3.313,3.774 3.352,3.586 3.3,3.416C3.122,2.877 3.024,2.299 3.024,1.697c0,-0.266 -0.217,-0.482 -0.48,-0.482H0.856c-0.266,0 -0.48,0.217 -0.48,0.482c0,4.525 3.707,8.193 8.233,8.193c0.265,0 0.481,-0.217 0.481,-0.482V7.727C9.089,7.459 8.874,7.242 8.608,7.242zM5.136,3.783l0.705,-2.574H5.29L4.878,3.076L4.466,1.209H3.919L4.62,3.783H5.136zM6.134,3.58c0.063,0.078 0.142,0.139 0.232,0.179c0.09,0.04 0.191,0.06 0.305,0.06s0.215,-0.02 0.305,-0.06c0.091,-0.04 0.168,-0.101 0.232,-0.179C7.271,3.5 7.319,3.404 7.354,3.289C7.389,3.174 7.405,3.041 7.405,2.89V2.765c0,-0.149 -0.018,-0.282 -0.052,-0.397C7.318,2.252 7.27,2.154 7.206,2.076c-0.063,-0.08 -0.143,-0.14 -0.232,-0.181C6.882,1.854 6.78,1.834 6.667,1.834c-0.111,0 -0.213,0.021 -0.304,0.062c-0.09,0.041 -0.167,0.101 -0.231,0.181C6.069,2.154 6.02,2.252 5.984,2.367C5.95,2.483 5.933,2.615 5.933,2.765V2.89c0,0.151 0.018,0.284 0.052,0.399C6.02,3.404 6.069,3.502 6.134,3.58zM6.411,2.766c0,-0.174 0.021,-0.305 0.067,-0.389s0.108,-0.125 0.188,-0.125c0.084,0 0.149,0.041 0.195,0.125c0.047,0.084 0.068,0.215 0.068,0.389v0.125c0,0.178 -0.021,0.309 -0.064,0.391C6.822,3.363 6.757,3.404 6.671,3.404c-0.082,0 -0.146,-0.041 -0.192,-0.123S6.409,3.068 6.409,2.891V2.766H6.411zM9.333,2.828L9.046,1.211H8.63L8.344,2.826L8.112,1.211H7.62l0.438,2.574h0.497l0.283,-1.518l0.285,1.518H9.62l0.437,-2.574h-0.49L9.333,2.828zM10.764,1.185c-0.022,-0.022 -0.05,-0.042 -0.081,-0.054C10.65,1.117 10.614,1.11 10.575,1.11s-0.074,0.007 -0.105,0.021c-0.031,0.013 -0.061,0.031 -0.081,0.054c-0.022,0.024 -0.041,0.052 -0.054,0.084s-0.019,0.067 -0.019,0.106s0.006,0.076 0.019,0.107c0.013,0.032 0.029,0.061 0.054,0.085c0.021,0.023 0.049,0.042 0.081,0.056c0.031,0.013 0.066,0.02 0.105,0.02s0.075,-0.006 0.107,-0.02c0.031,-0.014 0.059,-0.032 0.081,-0.056c0.022,-0.024 0.04,-0.053 0.052,-0.085c0.014,-0.033 0.02,-0.068 0.02,-0.107s-0.006,-0.074 -0.02,-0.106C10.804,1.236 10.786,1.209 10.764,1.185zM10.339,3.783h0.478V1.871h-0.478V3.783zM11.226,3.783h0.493v-1.05h0.769V2.303h-0.769v-0.66h0.862V1.209h-1.355V3.783zM13.356,1.269c-0.013,-0.033 -0.029,-0.062 -0.053,-0.084c-0.021,-0.022 -0.049,-0.042 -0.081,-0.054C13.19,1.117 13.155,1.11 13.116,1.11S13.04,1.117 13.01,1.131c-0.031,0.013 -0.06,0.031 -0.081,0.054c-0.021,0.024 -0.04,0.052 -0.053,0.084c-0.013,0.033 -0.019,0.067 -0.019,0.106s0.006,0.076 0.019,0.107c0.013,0.032 0.029,0.061 0.053,0.085c0.021,0.023 0.05,0.042 0.081,0.056c0.032,0.013 0.067,0.02 0.106,0.02s0.075,-0.006 0.106,-0.02c0.032,-0.014 0.06,-0.032 0.081,-0.056c0.021,-0.024 0.04,-0.053 0.053,-0.085c0.012,-0.033 0.018,-0.068 0.018,-0.107S13.368,1.302 13.356,1.269zM12.878,3.783h0.479V1.871h-0.479V3.783z" />
-</vector>
diff --git a/res/values/qtistrings.xml b/res/values/qtistrings.xml
index a11e5e5..73fbf5c 100644
--- a/res/values/qtistrings.xml
+++ b/res/values/qtistrings.xml
@@ -32,4 +32,7 @@
     <!-- OEM Key strings -->
     <string name="oem_key_code_action"></string>
     <string name="oem_code"></string>
+
+    <!-- Call Settings -->
+    <string name="call_settings_lbl">Call Settings</string>
 </resources>
diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
index bbd632c..08689ad 100644
--- a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
+++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java
@@ -121,13 +121,13 @@
         callTypeIconView.clear();
         callTypeIconView.add(callType);
         /**
-         * Ims icon(VoLTE/VoWifi) or CarrierOne video icon will be shown if carrierOne is supported
+         * Ims icon(VoLTE/VoWiFi/ViLTE/ViWiFi) will be shown if carrierOne is supported
          * otherwise, default video icon will be shown if it is a video call.
          */
         if (QtiImsExtUtils.isCarrierOneSupported()) {
-             callTypeIconView.addImsOrVideoIcon(callType, isVideoCall);
+            callTypeIconView.addImsIcon(callType, isVideoCall);
         } else {
-             callTypeIconView.setShowVideo(isVideoCall);
+            callTypeIconView.setShowVideo(isVideoCall);
         }
         callTypeTextView.setText(mCallTypeHelper.getCallTypeText(callType, isVideoCall));
         // Set the date.
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 6a447a6..74850c5 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -587,6 +587,8 @@
         // Stash away the Ids of the calls so that we can support deleting a row in the call log.
         views.callIds = getCallIds(c, count);
         views.isBusiness = mContactInfoHelper.isBusiness(info.sourceType);
+        views.isVideoCall = (c.getInt(CallLogQuery.FEATURES) & CallLog.Calls.FEATURES_VIDEO) ==
+                CallLog.Calls.FEATURES_VIDEO;
         views.numberType = (String) Phone.getTypeLabel(mContext.getResources(), details.numberType,
                 details.numberLabel);
         // Default case: an item in the call log.
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index d63531b..0a6b1b7 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -60,6 +60,7 @@
 import com.android.dialer.logging.Logger;
 import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.service.ExtendedBlockingButtonRenderer;
+import com.android.dialer.util.AppCompatConstants;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PhoneNumberUtil;
 import com.android.dialer.util.PresenceHelper;
@@ -200,6 +201,11 @@
     public boolean isBusiness;
 
     /**
+     * Whether this row is for a video call or not.
+     */
+    public boolean isVideoCall = false;
+
+    /**
      * The contact info for the contact displayed in this list item.
      */
     public ContactInfo info;
@@ -425,8 +431,6 @@
             videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
             videoCallButtonView.setOnClickListener(this);
 
-            videoCallIconView = (ImageView) actionsView.findViewById(R.id.videoCallIcon);
-
             createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
             createNewContactButtonView.setOnClickListener(this);
 
@@ -479,7 +483,23 @@
                 primaryActionButtonView.setContentDescription(TextUtils.expandTemplate(
                         mContext.getString(R.string.description_call_action),
                         nameOrNumber));
-                primaryActionButtonView.setImageResource(R.drawable.ic_call_24dp);
+
+                if (QtiImsExtUtils.isCarrierOneSupported()) {
+                    final Drawable imsDrawable = getLteOrWifiDrawable(callType, isVideoCall);
+                    if (imsDrawable != null) {
+                        primaryActionButtonView.setImageDrawable(imsDrawable);
+                        primaryActionButtonView.setColorFilter(mContext.getResources().getColor(
+                                android.R.color.white),
+                                PorterDuff.Mode.MULTIPLY);
+                    } else {
+                        primaryActionButtonView.setImageResource(R.drawable.ic_call_24dp);
+                        primaryActionButtonView.setColorFilter(mContext.getResources().getColor(
+                                R.color.call_log_list_item_primary_action_icon_tint),
+                                PorterDuff.Mode.MULTIPLY);
+                    }
+                } else {
+                    primaryActionButtonView.setImageResource(R.drawable.ic_call_24dp);
+                }
                 primaryActionButtonView.setVisibility(View.VISIBLE);
             } else {
                 primaryActionButtonView.setTag(null);
@@ -489,6 +509,35 @@
     }
 
     /**
+     * Returns drawable for Carrier One if it is LTE or WiFi type call.
+     *  @param callType The type of call for the current call log entry.
+     *  @param isVideoCall Whether current call log entry is video call.
+     */
+    private Drawable getLteOrWifiDrawable(int callType, boolean isVideoCall) {
+        Resources resources = mContext.getResources();
+        switch(callType) {
+            case AppCompatConstants.INCOMING_IMS_TYPE:
+            case AppCompatConstants.OUTGOING_IMS_TYPE:
+            case AppCompatConstants.MISSED_IMS_TYPE:
+                if (isVideoCall) {
+                    return resources.getDrawable(R.drawable.vilte);
+                } else {
+                    return resources.getDrawable(R.drawable.volte);
+                }
+            case AppCompatConstants.INCOMING_WIFI_TYPE:
+            case AppCompatConstants.OUTGOING_WIFI_TYPE:
+            case AppCompatConstants.MISSED_WIFI_TYPE:
+                if (isVideoCall) {
+                    return resources.getDrawable(R.drawable.viwifi);
+                } else {
+                    return resources.getDrawable(R.drawable.vowifi);
+                }
+            default:
+                return null;
+        }
+    }
+
+    /**
      * Binds text titles, click handlers and intents to the voicemail, details and callback action
      * buttons.
      */
@@ -523,12 +572,6 @@
         if (mCallLogCache.isVideoEnabled() && canPlaceCallToNumber && showVideoCallBtn) {
             videoCallButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
             videoCallButtonView.setVisibility(View.VISIBLE);
-            if (QtiImsExtUtils.isCarrierOneSupported()) {
-                Drawable drawable =  mContext.getResources().getDrawable(R.drawable.volte_video);
-                drawable.setColorFilter(mContext.getResources().getColor(
-                    R.color.dialtacts_secondary_text_color), PorterDuff.Mode.MULTIPLY);
-                videoCallIconView.setImageDrawable(drawable);
-            }
         } else {
             videoCallButtonView.setVisibility(View.GONE);
         }
diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java
index 56bd605..7c0034c 100644
--- a/src/com/android/dialer/calllog/CallTypeIconsView.java
+++ b/src/com/android/dialer/calllog/CallTypeIconsView.java
@@ -79,38 +79,40 @@
         invalidate();
     }
 
-    public void addImsOrVideoIcon(int callType, boolean showVideo) {
+    public void addImsIcon(int callType, boolean showVideo) {
         mShowVideo = showVideo;
-        if (showVideo) {
-            mWidth += sResources.videoCall.getIntrinsicWidth();
-            mHeight = Math.max(mHeight, sResources.videoCall.getIntrinsicHeight());
+        final Drawable drawable = getLteOrWifiDrawable(callType, showVideo);
+        if (drawable != null) {
+            // calculating drawable's width and adding it to total width for correct position
+            // of icon.
+            // calculating height by max of drawable height and other icons' height.
+            mWidth += drawable.getIntrinsicWidth();
+            mHeight = Math.max(mHeight, drawable.getIntrinsicHeight());
             invalidate();
-        } else {
-            final Drawable drawable = getImsOrWifiDrawable(callType);
-            if (drawable != null) {
-                // calculating drawable's width and adding it to total width for correct position
-                // of icon.
-                // calculating height by max of drawable height and other icons' height.
-                mWidth += drawable.getIntrinsicWidth();
-                mHeight = Math.max(mHeight, drawable.getIntrinsicHeight());
-                invalidate();
-            }
         }
     }
 
-    private Drawable getImsOrWifiDrawable(int callType) {
-       switch(callType) {
-         case AppCompatConstants.INCOMING_IMS_TYPE:
-         case AppCompatConstants.OUTGOING_IMS_TYPE:
-         case AppCompatConstants.MISSED_IMS_TYPE:
-              return sResources.imsCall;
-         case AppCompatConstants.INCOMING_WIFI_TYPE:
-         case AppCompatConstants.OUTGOING_WIFI_TYPE:
-         case AppCompatConstants.MISSED_WIFI_TYPE:
-              return sResources.wifiCall;
-         default:
-              return null;
-       }
+    private Drawable getLteOrWifiDrawable(int callType, boolean showVideo) {
+        switch(callType) {
+            case AppCompatConstants.INCOMING_IMS_TYPE:
+            case AppCompatConstants.OUTGOING_IMS_TYPE:
+            case AppCompatConstants.MISSED_IMS_TYPE:
+                if (showVideo) {
+                    return sResources.vilteCall;
+                } else {
+                    return sResources.volteCall;
+                }
+            case AppCompatConstants.INCOMING_WIFI_TYPE:
+            case AppCompatConstants.OUTGOING_WIFI_TYPE:
+            case AppCompatConstants.MISSED_WIFI_TYPE:
+                if (showVideo) {
+                    return sResources.viwifiCall;
+                } else {
+                    return sResources.vowifiCall;
+                }
+            default:
+                return null;
+        }
     }
 
     /**
@@ -196,7 +198,7 @@
         }
 
         // If showing the video call icon, draw it scaled appropriately.
-        if (mShowVideo) {
+        if (!mIsCarrierOneSupported && mShowVideo) {
             final Drawable drawable = sResources.videoCall;
             final int right = left + drawable.getIntrinsicWidth();
             drawable.setBounds(left, 0, right, drawable.getIntrinsicHeight());
@@ -205,7 +207,7 @@
         }
 
         for (Integer callType : mCallTypes) {
-            final Drawable drawableIms = getImsOrWifiDrawable(callType);
+            final Drawable drawableIms = getLteOrWifiDrawable(callType, mShowVideo);
             if (drawableIms != null) {
                 final int right = left + drawableIms.getIntrinsicWidth();
                 drawableIms.setBounds(left, 0, right, drawableIms.getIntrinsicHeight());
@@ -240,14 +242,25 @@
         public final int iconMargin;
 
         /**
-         * Drawable repesenting a wifi call.
+         * Drawable repesenting a VoWiFi call.
          */
-        public final Drawable wifiCall;
+        public final Drawable vowifiCall;
 
         /**
-         * Drawable repesenting a IMS call.
+         * Drawable repesenting a ViWiFi call.
          */
-        public final Drawable imsCall;
+        public final Drawable viwifiCall;
+
+        /**
+         * Drawable repesenting a VoLTE call.
+         */
+        public final Drawable volteCall;
+
+        /**
+         * Drawable repesenting a ViLTE call.
+         */
+        public final Drawable vilteCall;
+
         /**
          * Configures the call icon drawables.
          * A single white call arrow which points down and left is used as a basis for all of the
@@ -275,26 +288,19 @@
             blocked = getScaledBitmap(context, R.drawable.ic_block_24dp);
             blocked.setColorFilter(r.getColor(R.color.blocked_call), PorterDuff.Mode.MULTIPLY);
 
-            if (mIsCarrierOneSupported) {
-                videoCall = r.getDrawable(R.drawable.volte_video).mutate();
-            } else {
             // Get the video call icon, scaled to match the height of the call arrows.
             // We want the video call icon to be the same height as the call arrows, while keeping
             // the same width aspect ratio.
                 videoCall = getScaledBitmap(context, R.drawable.ic_videocam_24dp);
-            }
             videoCall.setColorFilter(r.getColor(R.color.dialtacts_secondary_text_color),
                     PorterDuff.Mode.MULTIPLY);
 
             iconMargin = r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
 
-            wifiCall = r.getDrawable(R.drawable.wifi_calling).mutate();
-            wifiCall.setColorFilter(r.getColor(R.color.dialtacts_secondary_text_color),
-                    PorterDuff.Mode.MULTIPLY);
-
-            imsCall = r.getDrawable(R.drawable.volte_voice).mutate();
-            imsCall.setColorFilter(r.getColor(R.color.dialtacts_secondary_text_color),
-                    PorterDuff.Mode.MULTIPLY);
+            viwifiCall = r.getDrawable(R.drawable.viwifi);
+            vowifiCall = r.getDrawable(R.drawable.vowifi);
+            volteCall = r.getDrawable(R.drawable.volte);
+            vilteCall = r.getDrawable(R.drawable.vilte);
         }
 
         // Gets the icon, scaled to the height of the call type icons. This helps display all the
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index 303c73a..3c6c66c 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -39,10 +39,12 @@
 
 import java.util.List;
 
+import org.codeaurora.ims.utils.QtiImsExtUtils;
+
 public class DialerSettingsActivity extends AppCompatPreferenceActivity {
     protected SharedPreferences mPreferences;
     private boolean migrationStatusOnBuildHeaders;
-
+    private final String ACTION_LAUNCH_CALL_SETTINGS = "org.codeaurora.CALL_SETTINGS";
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -85,13 +87,15 @@
             target.add(quickResponseSettingsHeader);
         }
 
-        Header speedDialSettingsHeader = new Header();
-        Intent speedDialSettingsIntent = new Intent(this, SpeedDialListActivity.class);
-        speedDialSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        if (!QtiImsExtUtils.isCarrierOneSupported()) {
+            Header speedDialSettingsHeader = new Header();
+            Intent speedDialSettingsIntent = new Intent(this, SpeedDialListActivity.class);
+            speedDialSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
-        speedDialSettingsHeader.titleRes = R.string.speed_dial_settings;
-        speedDialSettingsHeader.intent = speedDialSettingsIntent;
-        target.add(speedDialSettingsHeader);
+            speedDialSettingsHeader.titleRes = R.string.speed_dial_settings;
+            speedDialSettingsHeader.intent = speedDialSettingsIntent;
+            target.add(speedDialSettingsHeader);
+        }
 
         TelephonyManager telephonyManager =
                 (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
@@ -101,25 +105,38 @@
         // primary user and there are multiple SIMs. In N+, "Calling accounts" is shown whenever
         // "Call Settings" is not shown.
         boolean isPrimaryUser = isPrimaryUser();
-        if (isPrimaryUser
-                && TelephonyManagerCompat.getPhoneCount(telephonyManager) <= 1) {
-            Header callSettingsHeader = new Header();
-            Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
-            callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
-            callSettingsHeader.titleRes = R.string.call_settings_label;
-            callSettingsHeader.intent = callSettingsIntent;
-            target.add(callSettingsHeader);
-        } else if (BuildCompat.isAtLeastN() || isPrimaryUser) {
-            Header phoneAccountSettingsHeader = new Header();
-            Intent phoneAccountSettingsIntent =
-                    new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
-            phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        if (QtiImsExtUtils.isCarrierOneSupported()) {
+            if (isPrimaryUser) {
+                Header callSettingsHeader =  new Header();
+                Intent callSettingsIntent = new Intent(ACTION_LAUNCH_CALL_SETTINGS);
+                callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
-            phoneAccountSettingsHeader.titleRes = R.string.phone_account_settings_label;
-            phoneAccountSettingsHeader.intent = phoneAccountSettingsIntent;
-            target.add(phoneAccountSettingsHeader);
-        }
+                callSettingsHeader.titleRes = R.string.call_settings_lbl;
+                callSettingsHeader.intent = callSettingsIntent;
+                target.add(callSettingsHeader);
+           }
+        } else {
+            if (isPrimaryUser
+                    && TelephonyManagerCompat.getPhoneCount(telephonyManager) <= 1) {
+                Header callSettingsHeader = new Header();
+                Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
+                callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+                callSettingsHeader.titleRes = R.string.call_settings_label;
+                callSettingsHeader.intent = callSettingsIntent;
+                target.add(callSettingsHeader);
+            } else if (BuildCompat.isAtLeastN() || isPrimaryUser) {
+                Header phoneAccountSettingsHeader = new Header();
+                Intent phoneAccountSettingsIntent =
+                        new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
+                phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+                phoneAccountSettingsHeader.titleRes = R.string.phone_account_settings_label;
+                phoneAccountSettingsHeader.intent = phoneAccountSettingsIntent;
+                target.add(phoneAccountSettingsHeader);
+            }
+       }
         if (FilteredNumberCompat.canCurrentUserOpenBlockSettings(this)) {
             Header blockedCallsHeader = new Header();
             blockedCallsHeader.titleRes = R.string.manage_blocked_numbers_label;
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
index 59f8798..3736512 100644
--- a/src/com/android/dialer/settings/SoundSettingsFragment.java
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -38,6 +38,8 @@
 import com.android.dialer.compat.SettingsCompat;
 import com.android.phone.common.util.SettingsUtil;
 
+import org.codeaurora.ims.utils.QtiImsExtUtils;
+
 public class SoundSettingsFragment extends PreferenceFragment
         implements Preference.OnPreferenceChangeListener {
 
@@ -140,8 +142,16 @@
             mVibrateWhenRinging.setChecked(shouldVibrateWhenRinging());
         }
 
+        if (QtiImsExtUtils.isCarrierOneSupported()) {
+            getPreferenceScreen().removePreference(mRingtonePreference);
+            mRingtonePreference = null;
+        }
+
+
         // Lookup the ringtone name asynchronously.
-        new Thread(mRingtoneLookupRunnable).start();
+        if (mRingtonePreference != null) {
+           new Thread(mRingtoneLookupRunnable).start();
+        }
     }
 
     /**
@@ -197,12 +207,14 @@
      * Updates the summary text on the ringtone preference with the name of the ringtone.
      */
     private void updateRingtonePreferenceSummary() {
-        SettingsUtil.updateRingtoneName(
-                getActivity(),
-                mRingtoneLookupComplete,
-                RingtoneManager.TYPE_RINGTONE,
-                mRingtonePreference.getKey(),
-                MSG_UPDATE_RINGTONE_SUMMARY);
+        if (mRingtonePreference != null) {
+            SettingsUtil.updateRingtoneName(
+                    getActivity(),
+                    mRingtoneLookupComplete,
+                    RingtoneManager.TYPE_RINGTONE,
+                    mRingtonePreference.getKey(),
+                    MSG_UPDATE_RINGTONE_SUMMARY);
+       }
     }
 
     /**
diff --git a/src/com/android/dialer/util/AppCompatConstants.java b/src/com/android/dialer/util/AppCompatConstants.java
index dd6c024..773684a 100644
--- a/src/com/android/dialer/util/AppCompatConstants.java
+++ b/src/com/android/dialer/util/AppCompatConstants.java
@@ -27,9 +27,9 @@
     public static final int CALLS_REJECTED_TYPE = 5;
     // Added to android.provider.CallLog.Calls in N+.
     public static final int CALLS_BLOCKED_TYPE = 6;
-    public static final int INCOMING_IMS_TYPE = 8;
-    public static final int OUTGOING_IMS_TYPE = 9;
-    public static final int MISSED_IMS_TYPE = 10;
+    public static final int INCOMING_IMS_TYPE = Calls.INCOMING_IMS_TYPE;
+    public static final int OUTGOING_IMS_TYPE = Calls.OUTGOING_IMS_TYPE;
+    public static final int MISSED_IMS_TYPE = Calls.MISSED_IMS_TYPE;
     public static final int INCOMING_WIFI_TYPE = Calls.INCOMING_WIFI_TYPE;
     public static final int OUTGOING_WIFI_TYPE = Calls.OUTGOING_WIFI_TYPE;
     public static final int MISSED_WIFI_TYPE = Calls.MISSED_WIFI_TYPE;
