diff --git a/res/layout/group_name_edit_dialog.xml b/res/layout/group_name_edit_dialog.xml
index 8e8ddd2..381d1d8 100644
--- a/res/layout/group_name_edit_dialog.xml
+++ b/res/layout/group_name_edit_dialog.xml
@@ -31,7 +31,7 @@
         android:layout_marginRight="4dp"
         android:layout_marginTop="16dp"
         android:hint="@string/group_name_dialog_hint"
-        android:inputType="textCapWords|textNoSuggestions"
+        android:inputType="text"
         android:singleLine="true"
         android:maxLength="@integer/group_name_max_length"/>
 </LinearLayout>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5c9be9f..3555325 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -441,8 +441,8 @@
     <!-- Title for the update label dialog. CHAR LIMIT=40] -->
     <string name="group_name_dialog_update_title">Rename label</string>
 
-    <!-- Hint for the label name input field on the insert and update label dialogs [CHAR LIMIT=30] -->
-    <string name="group_name_dialog_hint">Label name</string>
+    <!-- Hint for the label name input field on the insert and update label dialogs [CHAR LIMIT=15] -->
+    <string name="group_name_dialog_hint">Label</string>
 
     <!-- Generic action string for starting an audio chat. Used by AccessibilityService to announce the purpose of the view. [CHAR LIMIT=NONE] -->
     <string name="audio_chat">Voice chat</string>
@@ -510,7 +510,7 @@
     <string name="event_edit_field_hint_text">Date</string>
 
     <!-- The button to add an label field to a contact in the Raw Contact Editor [CHAR LIMIT=15] -->
-    <string name="group_edit_field_hint_text">Label name</string>
+    <string name="group_edit_field_hint_text">Label</string>
 
     <!-- Button used for changing a photo in the Raw Contact Editor [CHAR LIMIT=15] -->
     <string name="change_photo">Change</string>
@@ -652,8 +652,8 @@
     <!-- Label to instruct the user to type in a contact's name to add the contact as a member of the current group. [CHAR LIMIT=64] -->
     <string name="enter_contact_name">Search contacts</string>
 
-    <!-- Hint text in the label name box in the edit label view. [CHAR LIMIT=20]-->
-    <string name="group_name_hint">Label\'s name</string>
+    <!-- Title of edit label view  [CHAR LIMIT=20]-->
+    <string name="title_edit_group">Edit Label</string>
 
     <!-- Header label in the contact editor for a profile that is local to the device only (and not associated with any account) [CHAR LIMIT=25] -->
     <string name="local_profile_title">My local profile</string>
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 4254a64..e4f8010 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -245,6 +245,13 @@
             if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "Received group URI " + groupUri);
             Toast.makeText(this, R.string.groupCreatedToast, Toast.LENGTH_SHORT).show();
             startActivity(GroupUtil.createViewGroupIntent(this, groupUri, /* title */ null));
+            if (this instanceof GroupMembersActivity) {
+                // If we created a group while viewing the members of an existing group (i.e.
+                // while on GroupMembersActivity), finish the current GroupMembersActivity so that
+                // hitting back from the new GroupMembersActivity that was just stared will open
+                // the all contacts list. See b/30047708.
+                finish();
+            }
         } else {
             super.onNewIntent(newIntent);
         }
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 3723d52..669735c 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -21,7 +21,6 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.TypedArray;
-import android.graphics.Color;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.support.v4.content.ContextCompat;
@@ -509,6 +508,13 @@
         textView.setText(String.valueOf(selectionCount));
     }
 
+    public void setActionBarTitle(String title) {
+        final TextView textView =
+                (TextView) mSelectionContainer.findViewById(R.id.selection_count_text);
+        textView.setVisibility(View.VISIBLE);
+        textView.setText(title);
+    }
+
     private void updateStatusBarColor() {
         if (!CompatUtils.isLollipopCompatible()) {
             return; // we can't change the status bar color prior to Lollipop
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index b75295d..4d58033 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -498,6 +498,7 @@
                 if (mMembersFragment != null) {
                     if (mIsEditMode) {
                         mMembersFragment.displayDeleteButtons(true);
+                        mActionBarAdapter.setActionBarTitle(getString(R.string.title_edit_group));
                     } else {
                         mMembersFragment.displayCheckBoxes(true);
                     }
@@ -545,7 +546,11 @@
 
     @Override
     public void onSelectedContactIdsChanged() {
-        mActionBarAdapter.setSelectionCount(mMembersFragment.getSelectedContactIds().size());
+        if (mIsEditMode) {
+            mActionBarAdapter.setActionBarTitle(getString(R.string.title_edit_group));
+        } else {
+            mActionBarAdapter.setSelectionCount(mMembersFragment.getSelectedContactIds().size());
+        }
     }
 
     @Override
diff --git a/src/com/android/contacts/group/GroupNameEditDialogFragment.java b/src/com/android/contacts/group/GroupNameEditDialogFragment.java
index d3c518e..5d7bcb8 100644
--- a/src/com/android/contacts/group/GroupNameEditDialogFragment.java
+++ b/src/com/android/contacts/group/GroupNameEditDialogFragment.java
@@ -27,6 +27,7 @@
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.View;
+import android.view.WindowManager;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.EditText;
@@ -98,6 +99,7 @@
                 .setNegativeButton(android.R.string.cancel, new OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
+                        hideInputMethod();
                         getListener().onGroupNameEditCancelled();
                         dismiss();
                     }
@@ -111,6 +113,8 @@
 
         // Disable the create button when the name is empty
         final AlertDialog alertDialog = builder.create();
+        alertDialog.getWindow().setSoftInputMode(
+                WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
         alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
             @Override
             public void onShow(DialogInterface dialog) {
@@ -123,6 +127,7 @@
                     mGroupNameEditText.setSelection(
                             mGroupName.length() > maxLength ? maxLength : mGroupName.length());
                 }
+                showInputMethod(mGroupNameEditText);
 
                 final Button createButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                 createButton.setEnabled(!TextUtils.isEmpty(getGroupName()));
@@ -140,10 +145,9 @@
                         createButton.setEnabled(!TextUtils.isEmpty(s));
                     }
                 });
-
-                showInputMethod(mGroupNameEditText);
             }
         });
+
         return alertDialog;
     }
 
@@ -168,6 +172,14 @@
         }
     }
 
+    private void hideInputMethod() {
+        final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
+                Context.INPUT_METHOD_SERVICE);
+        if (imm != null && mGroupNameEditText != null) {
+            imm.hideSoftInputFromWindow(mGroupNameEditText.getWindowToken(), /* flags */ 0);
+        }
+    }
+
     private Listener getListener() {
         if (!(getActivity() instanceof Listener)) {
             throw new ClassCastException(getActivity() + " must implement " +
diff --git a/src/com/android/contacts/interactions/GroupNameDialogFragment.java b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
index 7875ee5..5efccfc 100644
--- a/src/com/android/contacts/interactions/GroupNameDialogFragment.java
+++ b/src/com/android/contacts/interactions/GroupNameDialogFragment.java
@@ -23,6 +23,7 @@
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.InputFilter;
+import android.text.InputType;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.LayoutInflater;
@@ -36,6 +37,7 @@
 /**
  * A common superclass for creating and renaming groups.
  */
+// TODO: consolidate it with GroupNameEditDialogFragment
 public abstract class GroupNameDialogFragment extends DialogFragment {
     protected abstract int getTitleResourceId();
     protected abstract void initializeGroupLabelEditText(EditText editText);
@@ -49,6 +51,7 @@
         final EditText editText = (EditText) view.findViewById(R.id.group_label);
         final int maxLength = getResources().getInteger(R.integer.group_name_max_length);
         editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(maxLength) });
+        editText.setInputType(InputType.TYPE_CLASS_TEXT);
         initializeGroupLabelEditText(editText);
 
         builder.setTitle(getTitleResourceId());
