diff --git a/src/com/android/contacts/ui/widget/ContactEditorView.java b/src/com/android/contacts/ui/widget/ContactEditorView.java
index 0916bc0..ff90f65 100644
--- a/src/com/android/contacts/ui/widget/ContactEditorView.java
+++ b/src/com/android/contacts/ui/widget/ContactEditorView.java
@@ -41,7 +41,6 @@
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -225,28 +224,32 @@
 
     public Dialog createDialog(Bundle bundle) {
         if (bundle == null) throw new IllegalArgumentException("bundle must not be null");
-        int dialogId = bundle.getInt(DIALOG_ID_KEY);
+        final int dialogId = bundle.getInt(DIALOG_ID_KEY);
         switch (dialogId) {
             case DIALOG_ID_FIELD_SELECTOR:
-                final ArrayList<CharSequence> items =
+                final ArrayList<KindSectionView> usedFields =
+                    new ArrayList<KindSectionView>(mFields.getChildCount());
+                final ArrayList<CharSequence> usedFieldTitles =
                         new ArrayList<CharSequence>(mFields.getChildCount());
+
                 for (int i = 0; i < mFields.getChildCount(); i++) {
                     final KindSectionView sectionView = (KindSectionView) mFields.getChildAt(i);
                     // not a list and already exists? ignore
                     if (!sectionView.getKind().isList && sectionView.getEditorCount() != 0) {
                         continue;
                     }
-                    items.add(sectionView.getTitle());
+                    usedFieldTitles.add(sectionView.getTitle());
+                    usedFields.add(sectionView);
                 }
                 final DialogInterface.OnClickListener itemClickListener =
                         new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
-                        final KindSectionView view = (KindSectionView) mFields.getChildAt(which);
+                        final KindSectionView view = usedFields.get(which);
                         view.addItem();
                     }
                 };
                 return new AlertDialog.Builder(getContext())
-                        .setItems(items.toArray(new CharSequence[0]), itemClickListener)
+                        .setItems(usedFieldTitles.toArray(new CharSequence[0]), itemClickListener)
                         .create();
             default:
                 throw new IllegalArgumentException("Invalid dialogId: " + dialogId);
diff --git a/src/com/android/contacts/ui/widget/GenericEditorView.java b/src/com/android/contacts/ui/widget/GenericEditorView.java
index 378f4f4..6068660 100644
--- a/src/com/android/contacts/ui/widget/GenericEditorView.java
+++ b/src/com/android/contacts/ui/widget/GenericEditorView.java
@@ -219,17 +219,17 @@
                     // Keep around in model, but mark as deleted
                     mEntry.markDeleted();
 
-                    final ViewGroupAnimator animator = ViewGroupAnimator.captureView(getRootView());
+//                    final ViewGroupAnimator animator = ViewGroupAnimator.captureView(getRootView());
 
-                    animator.removeView(GenericEditorView.this);
-//                    ((ViewGroup) getParent()).removeView(GenericEditorView.this);
+//                    animator.removeView(GenericEditorView.this);
+                    ((ViewGroup) getParent()).removeView(GenericEditorView.this);
 
                     if (mListener != null) {
                         // Notify listener when present
                         mListener.onDeleted(GenericEditorView.this);
                     }
 
-                    animator.animate();
+//                    animator.animate();
                 }
             });
             addView(mDelete);
