diff --git a/src/com/android/contacts/common/logging/QuickContactEvent.java b/src/com/android/contacts/common/logging/QuickContactEvent.java
index 079e435..a1069ae 100644
--- a/src/com/android/contacts/common/logging/QuickContactEvent.java
+++ b/src/com/android/contacts/common/logging/QuickContactEvent.java
@@ -62,7 +62,7 @@
         public static final int UNSTAR = 3;
         public static final int EDIT = 4;
         public static final int ADD = 5;
-        public static final int DELETE = 6;
+        public static final int REMOVE = 6;
         public static final int SHARE = 7;
         public static final int SHORTCUT = 8;
         public static final int HELP = 9;
@@ -71,7 +71,7 @@
         public static final int VIDEOCALL = 12;
         public static final int EMAIL = 13;
         public static final int SIPCALL = 14;
-        public static final int MAP = 15;
+        public static final int ADDRESS = 15;
         public static final int DIRECTIONS = 16;
         public static final int THIRD_PARTY = 17;
     }
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index fc43b9e..8d888d3 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -977,7 +977,7 @@
             return;
         }
 
-        mIsRecreatedInstance = (savedInstanceState != null);
+        mIsRecreatedInstance = savedInstanceState != null;
         mShouldLog = true;
 
         // There're 3 states for each permission:
@@ -1366,7 +1366,7 @@
             newContactType = ContactType.UNKNOWN_TYPE;
         }
         if (mShouldLog && mContactType != newContactType) {
-            Logger.logQuickContactEvent( mReferrer, newContactType, CardType.UNKNOWN_CARD,
+            Logger.logQuickContactEvent(mReferrer, newContactType, CardType.UNKNOWN_CARD,
                     actionType, /* thirdPartyAction */ null);
         }
         mContactType = newContactType;
@@ -2121,7 +2121,7 @@
             if (!TextUtils.isEmpty(postalAddress)) {
                 primaryContentDescription.append(res.getString(R.string.map_other)).append(" ");
                 intent = StructuredPostalUtils.getViewPostalAddressIntent(postalAddress);
-                intent.putExtra(EXTRA_ACTION_TYPE, ActionType.MAP);
+                intent.putExtra(EXTRA_ACTION_TYPE, ActionType.ADDRESS);
                 header = postal.getFormattedAddress();
                 entryContextMenuInfo = new EntryContextMenuInfo(header,
                         res.getString(R.string.postalLabelsGroup), dataItem.getMimeType(),
@@ -3121,7 +3121,7 @@
                 return true;
             case R.id.menu_delete:
                 Logger.logQuickContactEvent(mReferrer, mContactType, CardType.UNKNOWN_CARD,
-                        ActionType.DELETE, /* thirdPartyAction */ null);
+                        ActionType.REMOVE, /* thirdPartyAction */ null);
                 if (isContactEditable()) {
                     deleteContact();
                 }
