diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/BandSelectionHelper.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/BandSelectionHelper.java
index 385eb72..16cab29 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/BandSelectionHelper.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/BandSelectionHelper.java
@@ -62,7 +62,6 @@
     private final BandHost mHost;
     private final ItemKeyProvider<K> mKeyProvider;
     private final SelectionTracker<K> mSelectionTracker;
-    private final SelectionPredicate<K> mSelectionPredicate;
     private final BandPredicate mBandPredicate;
     private final FocusDelegate<K> mFocusDelegate;
     private final OperationMonitor mLock;
@@ -81,7 +80,6 @@
             @NonNull AutoScroller scroller,
             @NonNull ItemKeyProvider<K> keyProvider,
             @NonNull SelectionTracker<K> selectionTracker,
-            @NonNull SelectionPredicate<K> selectionPredicate,
             @NonNull BandPredicate bandPredicate,
             @NonNull FocusDelegate<K> focusDelegate,
             @NonNull OperationMonitor lock) {
@@ -90,7 +88,6 @@
         checkArgument(scroller != null);
         checkArgument(keyProvider != null);
         checkArgument(selectionTracker != null);
-        checkArgument(selectionPredicate != null);
         checkArgument(bandPredicate != null);
         checkArgument(focusDelegate != null);
         checkArgument(lock != null);
@@ -98,7 +95,6 @@
         mHost = host;
         mKeyProvider = keyProvider;
         mSelectionTracker = selectionTracker;
-        mSelectionPredicate = selectionPredicate;
         mBandPredicate = bandPredicate;
         mFocusDelegate = focusDelegate;
         mLock = lock;
@@ -142,7 +138,6 @@
                 scroller,
                 keyProvider,
                 selectionTracker,
-                selectionPredicate,
                 bandPredicate,
                 focusDelegate,
                 lock);
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/DefaultSelectionTracker.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/DefaultSelectionTracker.java
index c188507..d58f1c8 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/DefaultSelectionTracker.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/DefaultSelectionTracker.java
@@ -242,8 +242,10 @@
 
     @Override
     public void startRange(int position) {
-        select(mKeyProvider.getKey(position));
-        anchorRange(position);
+        if (mSelection.contains(mKeyProvider.getKey(position))
+                || select(mKeyProvider.getKey(position))) {
+            anchorRange(position);
+        }
     }
 
     @Override
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/EventBridge.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/EventBridge.java
index 256e618..9b57de0 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/EventBridge.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/EventBridge.java
@@ -83,11 +83,8 @@
 
         @Override
         public void onItemRangeChanged(int startPosition, int itemCount, @Nullable Object payload) {
-            // No change in position. Ignore, since we assume
-            // selection is a user driven activity. So changes
-            // in properties of items shouldn't result in a
-            // change of selection.
-            // TODO: It is possible properties of items chould change to make them unselectable.
+            // No change in position. Ignore.
+            // TODO(b/72393576): Properties of items could change. Should reevaluate selected status
         }
 
         @Override
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/ItemDetailsLookup.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/ItemDetailsLookup.java
index d6e6e8f..fa20c25 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/ItemDetailsLookup.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/ItemDetailsLookup.java
@@ -93,7 +93,6 @@
      *
      * @param <K> Selection key type. @see {@link StorageStrategy} for supported types.
      */
-    // TODO: Can this be merged with ViewHolder?
     public abstract static class ItemDetails<K> {
 
         /** @return the position of an item. */
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/MotionEvents.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/MotionEvents.java
index 0de3704..0e50341 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/MotionEvents.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/MotionEvents.java
@@ -77,7 +77,7 @@
         return isButtonPressed(e, MotionEvent.BUTTON_TERTIARY);
     }
 
-    // TODO: Replace with MotionEvent.isButtonPressed once targeting 21 or higher.
+    // NOTE: Can replace this with MotionEvent.isButtonPressed once targeting 21 or higher.
     private static boolean isButtonPressed(MotionEvent e, int button) {
         if (button == 0) {
             return false;
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/OperationMonitor.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/OperationMonitor.java
index 496c0db..46b97e3 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/OperationMonitor.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/OperationMonitor.java
@@ -36,10 +36,10 @@
  * <p>
  * The host {@link android.app.Activity} or {@link android.app.Fragment} should avoid changing
  * {@link android.support.v7.widget.RecyclerView.Adapter Adapter} data while there
- * are active selection operations as this can result in a poor user experience.
+ * are active selection operations, as this can result in a poor user experience.
  *
  * <p>
- * To known when an operation is active listen to changes using an {@link OnChangeListener}.
+ * To know when an operation is active listen to changes using an {@link OnChangeListener}.
  */
 public final class OperationMonitor {
 
diff --git a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/SelectionTracker.java b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/SelectionTracker.java
index df793a1..5465840 100644
--- a/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/SelectionTracker.java
+++ b/recyclerview-selection/src/main/java/androidx/widget/recyclerview/selection/SelectionTracker.java
@@ -189,9 +189,12 @@
     abstract void onDataSetChanged();
 
     /**
-     * Specifies the "anchor" item position denoting the beginning of a range.
+     * Attempts to establish a range selection at {@code position}, selecting the item
+     * at {@code position} if needed.
      *
-     * @param position The anchor position for the selection range.
+     * @param position The "anchor" position for the range. Subsequent range operations
+     *                 (primarily keyboard and mouse based operations like SHIFT + click)
+     *                 work with the established anchor point to define selection ranges.
      */
     abstract void startRange(int position);
 
@@ -245,7 +248,9 @@
      */
     abstract void setProvisionalSelection(@NonNull Set<K> newSelection);
 
-    /** Clears any existing provisional selection */
+    /**
+     * Clears any existing provisional selection
+     */
     abstract void clearProvisionalSelection();
 
     /**
@@ -780,8 +785,6 @@
 
             // Band selection not supported in single select mode, or when key access
             // is limited to anything less than the entire corpus.
-            // TODO: Since we cach grid info from laid out items, we could cache key too.
-            // Then we couldn't have to limit to CORPUS access.
             if (mKeyProvider.hasAccess(ItemKeyProvider.SCOPE_MAPPED)
                     && mSelectionPredicate.canSelectMultiple()) {
                 // BandSelectionHelper provides support for band selection on-top of a RecyclerView
diff --git a/recyclerview-selection/tests/java/androidx/widget/recyclerview/selection/BandSelectionHelperTest.java b/recyclerview-selection/tests/java/androidx/widget/recyclerview/selection/BandSelectionHelperTest.java
index 64c47ec..1c999c5 100644
--- a/recyclerview-selection/tests/java/androidx/widget/recyclerview/selection/BandSelectionHelperTest.java
+++ b/recyclerview-selection/tests/java/androidx/widget/recyclerview/selection/BandSelectionHelperTest.java
@@ -32,7 +32,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import androidx.widget.recyclerview.selection.SelectionTracker.SelectionPredicate;
 import androidx.widget.recyclerview.selection.testing.TestAdapter;
 import androidx.widget.recyclerview.selection.testing.TestAutoScroller;
 import androidx.widget.recyclerview.selection.testing.TestBandPredicate;
@@ -66,12 +65,11 @@
         ItemKeyProvider<String> keyProvider =
                 new TestItemKeyProvider<>(ItemKeyProvider.SCOPE_MAPPED, mAdapter);
         OperationMonitor operationMonitor = new OperationMonitor();
-        SelectionPredicate<String> selectionTest = SelectionPredicates.createSelectAnything();
 
         SelectionTracker<String> helper = new DefaultSelectionTracker<String>(
                 "band-selection-test",
                 keyProvider,
-                selectionTest,
+                SelectionPredicates.createSelectAnything(),
                 StorageStrategy.createStringStorage());
 
         EventBridge.install(mAdapter, helper, keyProvider);
@@ -82,7 +80,6 @@
                 new TestAutoScroller(),
                 keyProvider,
                 helper,
-                selectionTest,
                 mBandPredicate,
                 focusDelegate,
                 operationMonitor) {
diff --git a/samples/Support7Demos/src/main/res/values/strings.xml b/samples/Support7Demos/src/main/res/values/strings.xml
index 2c4b0b6..8f6f37c 100644
--- a/samples/Support7Demos/src/main/res/values/strings.xml
+++ b/samples/Support7Demos/src/main/res/values/strings.xml
@@ -236,8 +236,8 @@
     <string name="appcompat_vector_disabled">AnimatedVectorDrawableCompat does not work on devices running API v10 or below</string>
     <string name="appcompat_vector_title">AppCompat/Integrations/AnimatedVectorDrawable</string>
 
-    <string name="simple_selection_demo_activity">RecyclerView Selection</string>
-    <string name="fancy_selection_demo_activity">RecyclerView: Gesture+Pointer Selection</string>
+    <string name="simple_selection_demo_activity">RecyclerView Selection: Gesture Only</string>
+    <string name="fancy_selection_demo_activity">RecyclerView Selection: Gesture and Pointer</string>
 
     <string name="night_mode">DAY</string>
 
