diff --git a/res/values-sw600dp-land/donottranslate_config.xml b/res/values-sw600dp-land/donottranslate_config.xml
deleted file mode 100644
index fe09771..0000000
--- a/res/values-sw600dp-land/donottranslate_config.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, 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.
-*/
--->
-
-<resources>
-    <bool name="config_browse_list_show_images">true</bool>
-    <bool name="config_use_two_panes_in_favorites">true</bool>
-    <bool name="config_browse_list_reverse_images">false</bool>
-</resources>
diff --git a/res/values-sw600dp/donottranslate_config.xml b/res/values-sw600dp/donottranslate_config.xml
deleted file mode 100644
index bbf37c1..0000000
--- a/res/values-sw600dp/donottranslate_config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, 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.
-*/
--->
-
-<resources>
-    <bool name="config_use_two_panes">true</bool>
-    <bool name="config_use_two_panes_in_favorites">false</bool>
-    <bool name="show_home_icon">true</bool>
-    <bool name="config_browse_list_show_images">false</bool>
-    <bool name="config_browse_list_reverse_images">false</bool>
-</resources>
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index 0d09967..5fc4f89 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -19,25 +19,9 @@
 
 <resources>
 
-    <!-- Flag indicating whether to show images in browse list -->
-    <bool name="config_browse_list_show_images">true</bool>
-
-    <!-- Whether to show images in the reverse from the default position in the browse list. -->
-    <bool name="config_browse_list_reverse_images">false</bool>
-
     <!-- If true, phonetic name is included in the contact editor by default -->
     <bool name="config_editor_include_phonetic_name">false</bool>
 
-    <!-- If true, Contacts uses two panes: List and Detail. If false, Details are
-         shown in their own screens. This flag must be in sync with the layout definitions. -->
-    <bool name="config_use_two_panes">false</bool>
-
-    <!--  If true, Contacts uses two panes in the favorites view, one for starred and one for
-          frequently contacted.  If false, only one list is shown with starred on top and frequently
-          contacted listed below. Note: This should not be true if config_use_two_panes is
-          false. -->
-    <bool name="config_use_two_panes_in_favorites">false</bool>
-
     <!-- If true, the "home" icon on the action bar will be shown. -->
     <bool name="show_home_icon">false</bool>
 
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 3154f8a..335a564 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -100,14 +100,11 @@
     protected ContactListAdapter createListAdapter() {
         DefaultContactListAdapter adapter = new DefaultContactListAdapter(getContext());
         adapter.setSectionHeaderDisplayEnabled(isSectionHeaderDisplayEnabled());
-        boolean showPhoto = getResources().getBoolean(R.bool.config_browse_list_show_images);
         mContactAllListShowCardFrame = getResources().getBoolean(
                 R.bool.contact_all_list_show_card_frame);
-        adapter.setDisplayPhotos(showPhoto);
-        if (showPhoto) {
-            boolean reverse = getResources().getBoolean(R.bool.config_browse_list_reverse_images);
-            adapter.setPhotoPosition(ContactListItemView.getDefaultPhotoPosition(reverse));
-        }
+        adapter.setDisplayPhotos(true);
+        adapter.setPhotoPosition(
+                ContactListItemView.getDefaultPhotoPosition(/* opposite = */ false));
         return adapter;
     }
 
