diff --git a/tests/sketch/src/com/android/gesture/GestureOverlay.java b/tests/sketch/src/com/android/gesture/GestureOverlay.java
index 72ab787..454cecb 100755
--- a/tests/sketch/src/com/android/gesture/GestureOverlay.java
+++ b/tests/sketch/src/com/android/gesture/GestureOverlay.java
@@ -41,8 +41,10 @@
     // TODO: Move all these values into XML attributes
     private static final int TRANSPARENT_BACKGROUND = 0x00000000;
 
-    private static final float FADING_ALPHA_CHANGE = 0.03f;
-    private static final long FADING_REFRESHING_RATE = 100;
+    // TODO: SHOULD BE A TOTAL DURATION
+    private static final float FADING_ALPHA_CHANGE = 0.15f;
+    private static final long FADING_OFFSET = 300;
+    private static final long FADING_REFRESHING_RATE = 16;
 
     private static final int GESTURE_STROKE_WIDTH = 12;
     private static final boolean GESTURE_RENDERING_ANTIALIAS = true;
@@ -235,7 +237,7 @@
             mFadingAlpha = 1;
             mIsFadingOut = true;
             mHandler.removeCallbacks(mFadingOut);
-            mHandler.postDelayed(mFadingOut, FADING_REFRESHING_RATE);
+            mHandler.postDelayed(mFadingOut, FADING_OFFSET);
         } else {
             mPath = null;
             mCurrentGesture = null;
diff --git a/tests/sketch/src/com/android/gesture/TouchThroughGesturing.java b/tests/sketch/src/com/android/gesture/TouchThroughGesturing.java
index 7fc7e28..fc878c8 100644
--- a/tests/sketch/src/com/android/gesture/TouchThroughGesturing.java
+++ b/tests/sketch/src/com/android/gesture/TouchThroughGesturing.java
@@ -37,6 +37,8 @@
     private static final float SQUARENESS_THRESHOLD = 0.275f;
     private static final float ANGLE_THRESHOLD = 40;
 
+    private static final boolean STEAL_EVENTS = false;
+
     public static final int DEFAULT_UNCERTAIN_GESTURE_COLOR = Color.argb(60, 255, 255, 0);
 
     private boolean mIsGesturing = false;
@@ -91,6 +93,11 @@
     }
 
     public void onGesture(GestureOverlay overlay, MotionEvent event) {
+        //noinspection PointlessBooleanExpression
+        if (!STEAL_EVENTS) {
+            mModel.dispatchTouchEvent(event);
+        }
+
         if (mIsGesturing) {
             return;
         }
@@ -114,14 +121,18 @@
             if (box.squareness > SQUARENESS_THRESHOLD || angle < ANGLE_THRESHOLD) {
                 mIsGesturing = true;
                 overlay.setGestureColor(GestureOverlay.DEFAULT_GESTURE_COLOR);
-                event = MotionEvent.obtain(event.getDownTime(), System.currentTimeMillis(),
-                        MotionEvent.ACTION_UP, x, y, event.getPressure(), event.getSize(),
-                        event.getMetaState(), event.getXPrecision(), event.getYPrecision(),
-                        event.getDeviceId(), event.getEdgeFlags());
+                if (STEAL_EVENTS) {
+                    event = MotionEvent.obtain(event.getDownTime(), System.currentTimeMillis(),
+                            MotionEvent.ACTION_UP, x, y, event.getPressure(), event.getSize(),
+                            event.getMetaState(), event.getXPrecision(), event.getYPrecision(),
+                            event.getDeviceId(), event.getEdgeFlags());
+                }
             }
         }
 
-        mModel.dispatchTouchEvent(event);
+        if (STEAL_EVENTS) {
+            mModel.dispatchTouchEvent(event);
+        }
     }
 
     public void onFinishGesture(GestureOverlay overlay, MotionEvent event) {
diff --git a/tests/sketch/src/com/android/gesture/example/ContactListGestureOverlay.java b/tests/sketch/src/com/android/gesture/example/ContactListGestureOverlay.java
index fc26757..6eb2f23 100644
--- a/tests/sketch/src/com/android/gesture/example/ContactListGestureOverlay.java
+++ b/tests/sketch/src/com/android/gesture/example/ContactListGestureOverlay.java
@@ -50,8 +50,6 @@
             People.DISPLAY_NAME, // 1
     };
 
-    private GestureOverlay mOverlay;
-
     private ContactAdapter mContactAdapter;
 
     private TouchThroughGesturing mGestureProcessor;
@@ -97,7 +95,7 @@
         setProgressBarIndeterminateVisibility(false);
 
         // add a gesture overlay on top of the ListView
-        mOverlay = new GestureOverlay(this);
+        GestureOverlay overlay = new GestureOverlay(this);
         mGestureProcessor = new TouchThroughGesturing(mContactList);
         mGestureProcessor.setGestureType(TouchThroughGesturing.MULTIPLE_STROKE);
         mGestureProcessor.addGestureActionListener(new GestureActionListener() {
@@ -114,9 +112,9 @@
                 }
             }
         });
-        mOverlay.addGestureListener(mGestureProcessor);
+        overlay.addGestureListener(mGestureProcessor);
         ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                 ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
-        this.addContentView(mOverlay, params);
+        this.addContentView(overlay, params);
     }
 }
