Replace Timestamp with Uptime

Replace the context-dependent Timestamp
(that is not actually offset to anything in particular)
with Uptime, which is a type safe replacement for
SystemClock.uptimeMillis().

Bug: 144579649
Test: ./gradlew ui:ui-platform:test
Test: ./gradlew ui:ui-core:test
Test: ./gradlew ui:ui-framework:test

Change-Id: Ib1c8fc1c97e6941717427082c90ec5f1238f1371
diff --git a/ui/ui-core/api/0.1.0-dev03.txt b/ui/ui-core/api/0.1.0-dev03.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/0.1.0-dev03.txt
+++ b/ui/ui-core/api/0.1.0-dev03.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev03.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev03.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/api/restricted_0.1.0-dev03.txt b/ui/ui-core/api/restricted_0.1.0-dev03.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev03.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index 8b330b9..481f79e 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -329,7 +329,6 @@
     method public long getNanoseconds();
     method public operator androidx.ui.core.Duration minus(androidx.ui.core.Duration other);
     method public operator androidx.ui.core.Duration plus(androidx.ui.core.Duration other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Timestamp timestamp);
     method public operator androidx.ui.core.Duration times(int factor);
     method public operator androidx.ui.core.Duration times(double factor);
     field public static final androidx.ui.core.Duration.Companion! Companion;
@@ -620,15 +619,15 @@
   }
 
   public final class PointerInputData {
-    ctor public PointerInputData(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    ctor public PointerInputData(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     ctor public PointerInputData();
-    method public androidx.ui.core.Timestamp? component1();
+    method public androidx.ui.core.Uptime? component1();
     method public androidx.ui.core.PxPosition? component2();
     method public boolean component3();
-    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Timestamp? timestamp, androidx.ui.core.PxPosition? position, boolean down);
+    method public androidx.ui.core.PointerInputData copy(androidx.ui.core.Uptime? uptime, androidx.ui.core.PxPosition? position, boolean down);
     method public boolean getDown();
     method public androidx.ui.core.PxPosition? getPosition();
-    method public androidx.ui.core.Timestamp? getTimestamp();
+    method public androidx.ui.core.Uptime? getUptime();
   }
 
   public final class PointerInputKt {
@@ -923,22 +922,26 @@
     enum_constant public static final androidx.ui.core.TextUnitType Sp;
   }
 
-  public final class Timestamp implements java.lang.Comparable<androidx.ui.core.Timestamp> {
-    ctor public Timestamp(long nanoseconds);
-    method public int compareTo(androidx.ui.core.Timestamp other);
+  public final class Uptime implements java.lang.Comparable<androidx.ui.core.Uptime> {
+    ctor public Uptime(long nanoseconds);
+    method public int compareTo(androidx.ui.core.Uptime other);
     method public long component1();
-    method public androidx.ui.core.Timestamp copy(long nanoseconds);
+    method public androidx.ui.core.Uptime copy(long nanoseconds);
     method public long getNanoseconds();
-    method public operator androidx.ui.core.Timestamp minus(androidx.ui.core.Duration duration);
-    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Timestamp other);
-    method public operator androidx.ui.core.Timestamp plus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Uptime minus(androidx.ui.core.Duration duration);
+    method public operator androidx.ui.core.Duration minus(androidx.ui.core.Uptime other);
+    method public operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration duration);
+    field public static final androidx.ui.core.Uptime.Companion! Companion;
   }
 
-  public final class Timestamps {
-    ctor public Timestamps();
-    method public static androidx.ui.core.Timestamp millisecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp nanosecondsToTimestamp(long);
-    method public static androidx.ui.core.Timestamp secondsToTimestamp(long);
+  public static final class Uptime.Companion {
+    method public androidx.ui.core.Uptime getBoot();
+    property public final androidx.ui.core.Uptime Boot;
+  }
+
+  public final class UptimeKt {
+    ctor public UptimeKt();
+    method public static operator androidx.ui.core.Uptime plus(androidx.ui.core.Duration, androidx.ui.core.Uptime uptime);
   }
 
   public final class Velocity {
@@ -2060,14 +2063,14 @@
   public final class PointerInputTestUtilKt {
     ctor public PointerInputTestUtilKt();
     method public static androidx.ui.core.PointerInputChange consume(androidx.ui.core.PointerInputChange, float dx = 0f, float dy = 0f, boolean downChange = false);
-    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Timestamp timestamp = 0.millisecondsToTimestamp(), float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange down(int id = 0, androidx.ui.core.Duration duration = Duration.Zero, float x = 0f, float y = 0f);
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverAllPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, androidx.ui.core.PointerInputChange![] pointerInputChanges, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static java.util.List<androidx.ui.core.PointerInputChange> invokeOverPasses(kotlin.jvm.functions.Function3<? super java.util.List<androidx.ui.core.PointerInputChange>,? super androidx.ui.core.PointerEventPass,? super androidx.ui.core.IntPxSize,? extends java.util.List<androidx.ui.core.PointerInputChange>>, java.util.List<androidx.ui.core.PointerInputChange> pointerInputChanges, androidx.ui.core.PointerEventPass![] pointerEventPasses, androidx.ui.core.IntPxSize size = IntPxSize(Int.MAX_VALUE.ipx, Int.MAX_VALUE.ipx));
     method public static androidx.ui.core.PointerInputChange moveBy(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float dx = 0f, float dy = 0f);
-    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp, float x = 0f, float y = 0f);
-    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Timestamp timestamp);
+    method public static androidx.ui.core.PointerInputChange moveTo(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration, float x = 0f, float y = 0f);
+    method public static androidx.ui.core.PointerInputChange up(androidx.ui.core.PointerInputChange, androidx.ui.core.Duration duration);
   }
 
 }
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/Duration.kt b/ui/ui-core/src/main/java/androidx/ui/core/Duration.kt
index af2d72d..4095c72 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/Duration.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/Duration.kt
@@ -168,11 +168,6 @@
     operator fun plus(other: Duration) = Duration(nanoseconds + other.nanoseconds)
 
     /**
-     * Add this Duration to a [Timestamp] and returns the result as a [Timestamp].
-     */
-    operator fun plus(timestamp: Timestamp) = Timestamp(nanoseconds + timestamp.nanoseconds)
-
-    /**
      * Subtracts [other] from this Duration and returns the difference.
      */
     operator fun minus(other: Duration) = Duration(nanoseconds - other.nanoseconds)
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/PointerInput.kt b/ui/ui-core/src/main/java/androidx/ui/core/PointerInput.kt
index aeb1801..9f92783 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/PointerInput.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/PointerInput.kt
@@ -27,11 +27,12 @@
     val consumed: ConsumedData
 )
 
+// TODO(shepshapard): Uptime will be an Inline Class, so it should not be nullable.
 /**
  * Data associated with a pointer
  */
 data class PointerInputData(
-    val timestamp: Timestamp? = null,
+    val uptime: Uptime? = null,
     val position: PxPosition? = null,
     val down: Boolean = false
 )
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/Timestamp.kt b/ui/ui-core/src/main/java/androidx/ui/core/Timestamp.kt
deleted file mode 100644
index 0bf8c6e..0000000
--- a/ui/ui-core/src/main/java/androidx/ui/core/Timestamp.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-@file:JvmName("Timestamps")
-@file:Suppress("NOTHING_TO_INLINE")
-
-package androidx.ui.core
-
-/**
- * Convert a [Long] value in nanoseconds to a [Timestamp].
- */
-// TODO(inline)
-fun Long.nanosecondsToTimestamp() = Timestamp(this)
-
-/**
- * Convert a [Long] value in milliseconds to a [Timestamp].
- */
-// TODO(inline)
-fun Long.millisecondsToTimestamp() = Timestamp(this * NanosecondsPerMillisecond)
-
-/**
- * Convert a [Long] value in seconds to a [Timestamp].
- */
-// TODO(inline)
-fun Long.secondsToTimestamp() = Timestamp(this * NanosecondsPerSecond)
-
-/**
- * A single point in time expressed in [nanoseconds]. Compare to [Duration].
- * [Timestamp] permits arithmetic between absolute timestamps from the same time base
- * yielding [Duration] where deltas from two timestamps are involved.
- *
- * The time base of any given `Timestamp` is defined by the context where the `Timestamp`
- * was obtained.
- */
-data class Timestamp(val nanoseconds: Long) : Comparable<Timestamp> {
-
-    /**
-     * Adds a [Duration] to this timestamp and returns the result.
-     */
-    operator fun plus(duration: Duration) = Timestamp(nanoseconds + duration.nanoseconds)
-
-    /**
-     * Subtracts a [Duration] from this timestamp and returns the result.
-     */
-    operator fun minus(duration: Duration) = Timestamp(nanoseconds - duration.nanoseconds)
-
-    /**
-     * Returns the [Duration] between this timestamp and another.
-     */
-    operator fun minus(other: Timestamp) = Duration(nanoseconds - other.nanoseconds)
-
-    override fun compareTo(other: Timestamp): Int = when {
-        nanoseconds < other.nanoseconds -> -1
-        nanoseconds == other.nanoseconds -> 0
-        else -> 1
-    }
-}
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/Uptime.kt b/ui/ui-core/src/main/java/androidx/ui/core/Uptime.kt
new file mode 100644
index 0000000..ba720fc
--- /dev/null
+++ b/ui/ui-core/src/main/java/androidx/ui/core/Uptime.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.ui.core
+
+import androidx.compose.Immutable
+
+/**
+ * A single point in time with a time base of the system's uptime [nanoseconds]. Compare to
+ * [Duration].
+ *
+ * Arithmetic involving [Uptime] is limited and always involves [Duration].  For example, it is
+ * nonsensical to add two [Uptime]s, an [Uptime] + a [Duration] yields an [Uptime], and an
+ * [Uptime] - an [Uptime] yields a [Duration].
+ */
+@Immutable
+data class Uptime(val nanoseconds: Long) : Comparable<Uptime> {
+
+    /**
+     * Adds a [Duration] to this [Uptime] and returns the result.
+     */
+    operator fun plus(duration: Duration) = Uptime(nanoseconds + duration.nanoseconds)
+
+    /**
+     * Subtracts a [Duration] from this [Uptime] and returns the result.
+     */
+    operator fun minus(duration: Duration) = Uptime(nanoseconds - duration.nanoseconds)
+
+    /**
+     * Returns the [Duration] between this [Uptime] and another.
+     */
+    operator fun minus(other: Uptime) = Duration(nanoseconds - other.nanoseconds)
+
+    /**
+     * Compares this [Uptime] to [other], returning zero if the values are equal.
+     *
+     * Returns a negative integer if this [Uptime] is shorter than
+     * [other], or a positive integer if it is longer.
+     */
+    override fun compareTo(other: Uptime): Int = when {
+        nanoseconds < other.nanoseconds -> -1
+        nanoseconds == other.nanoseconds -> 0
+        else -> 1
+    }
+
+    companion object {
+        /** The time at which the device booted (0 nanoseconds). */
+        val Boot = Uptime(0)
+    }
+}
+
+/**
+ * Add a Duration to a [Uptime] and returns the result as a [Uptime].
+ */
+operator fun Duration.plus(uptime: Uptime) = Uptime(nanoseconds + uptime.nanoseconds)
\ No newline at end of file
diff --git a/ui/ui-core/src/main/java/androidx/ui/testutils/PointerInputTestUtil.kt b/ui/ui-core/src/main/java/androidx/ui/testutils/PointerInputTestUtil.kt
index ed94506..ad9f945 100644
--- a/ui/ui-core/src/main/java/androidx/ui/testutils/PointerInputTestUtil.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/testutils/PointerInputTestUtil.kt
@@ -24,28 +24,27 @@
 import androidx.ui.core.PointerInputData
 import androidx.ui.core.PointerInputHandler
 import androidx.ui.core.PxPosition
-import androidx.ui.core.Timestamp
+import androidx.ui.core.Uptime
 import androidx.ui.core.ipx
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 
 fun down(
     id: Int = 0,
-    timestamp: Timestamp = 0L.millisecondsToTimestamp(),
+    duration: Duration = Duration.Zero,
     x: Float = 0f,
     y: Float = 0f
 ): PointerInputChange =
     PointerInputChange(
         id,
-        PointerInputData(timestamp, PxPosition(x.px, y.px), true),
+        PointerInputData(Uptime.Boot + duration, PxPosition(x.px, y.px), true),
         PointerInputData(null, null, false),
         ConsumedData(PxPosition.Origin, false)
     )
 
-fun PointerInputChange.moveTo(timestamp: Timestamp, x: Float = 0f, y: Float = 0f) =
+fun PointerInputChange.moveTo(duration: Duration, x: Float = 0f, y: Float = 0f) =
     copy(
         previous = current,
-        current = PointerInputData(timestamp, PxPosition(x.px, y.px), true),
+        current = PointerInputData(Uptime.Boot + duration, PxPosition(x.px, y.px), true),
         consumed = ConsumedData()
     )
 
@@ -53,17 +52,17 @@
     copy(
         previous = current,
         current = PointerInputData(
-            current.timestamp!! + duration,
+            current.uptime!! + duration,
             PxPosition(current.position!!.x + dx.px, current.position.y + dy.px),
             true
         ),
         consumed = ConsumedData()
     )
 
-fun PointerInputChange.up(timestamp: Timestamp) =
+fun PointerInputChange.up(duration: Duration) =
     copy(
         previous = current,
-        current = PointerInputData(timestamp, null, false),
+        current = PointerInputData(Uptime.Boot + duration, null, false),
         consumed = ConsumedData()
     )
 
diff --git a/ui/ui-core/src/test/java/androidx/ui/core/PointerInputTest.kt b/ui/ui-core/src/test/java/androidx/ui/core/PointerInputTest.kt
index dde35ee..07984de 100644
--- a/ui/ui-core/src/test/java/androidx/ui/core/PointerInputTest.kt
+++ b/ui/ui-core/src/test/java/androidx/ui/core/PointerInputTest.kt
@@ -462,12 +462,12 @@
         return PointerInputChange(
             0,
             PointerInputData(
-                100L.millisecondsToTimestamp(),
+                Uptime.Boot + 100.milliseconds,
                 PxPosition(currentX.px, currentY.px),
                 currentDown
             ),
             PointerInputData(
-                0L.millisecondsToTimestamp(),
+                Uptime.Boot + 0.milliseconds,
                 PxPosition(previousX.px, previousY.px),
                 previousDown
             ),
diff --git a/ui/ui-core/src/test/java/androidx/ui/core/TimestampTest.kt b/ui/ui-core/src/test/java/androidx/ui/core/TimestampTest.kt
deleted file mode 100644
index 742e590..0000000
--- a/ui/ui-core/src/test/java/androidx/ui/core/TimestampTest.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.ui.core
-
-import org.junit.Assert.assertEquals
-import org.junit.Test
-
-class TimestampTest {
-    @Test
-    fun durationArithmetic() {
-        val fiveDaysNanos = NanosecondsPerDay * 5
-        val startTime: Timestamp = fiveDaysNanos.nanosecondsToTimestamp()
-        val endTime: Timestamp = startTime + 25.minutes
-        assertEquals("end - start", 25.minutes, endTime - startTime)
-        assertEquals("end - 25.minutes", startTime, endTime - 25.minutes)
-    }
-}
\ No newline at end of file
diff --git a/ui/ui-core/src/test/java/androidx/ui/core/UptimeTest.kt b/ui/ui-core/src/test/java/androidx/ui/core/UptimeTest.kt
new file mode 100644
index 0000000..15f7206
--- /dev/null
+++ b/ui/ui-core/src/test/java/androidx/ui/core/UptimeTest.kt
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.ui.core
+
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.Test
+
+class UptimeTest {
+
+    @Test
+    fun compareTo_greaterThan_isCorrect() {
+        assertTrue(Uptime(-1) > Uptime(-2))
+        assertTrue(Uptime(0) > Uptime(-1))
+        assertTrue(Uptime(1) > Uptime(0))
+        assertTrue(Uptime(2) > Uptime(1))
+    }
+
+    @Test
+    fun compareTo_lessThan_isCorrect() {
+        assertTrue(Uptime(-2) < Uptime(-1))
+        assertTrue(Uptime(-1) < Uptime(0))
+        assertTrue(Uptime(0) < Uptime(1))
+        assertTrue(Uptime(1) < Uptime(2))
+    }
+
+    @Test
+    fun compareTo_equals_isCorrect() {
+        assertEquals(0, Uptime(-1).compareTo(Uptime(-1)))
+        assertEquals(0, Uptime(0).compareTo(Uptime(0)))
+        assertEquals(0, Uptime(1).compareTo(Uptime(1)))
+    }
+
+    @Test
+    fun plus_duration_isCorrect() {
+        assertEquals(Uptime(5), Uptime(2) + 3.nanoseconds)
+    }
+
+    @Test
+    fun plus_durationInverted_isCorrect() {
+        assertEquals(Uptime(5), 3.nanoseconds + Uptime(2))
+    }
+
+    @Test
+    fun minus_duration_isCorrect() {
+        assertEquals(Uptime(2), Uptime(5) - 3.nanoseconds)
+    }
+
+    @Test
+    fun minus_uptime_isCorrect() {
+        assertEquals(Duration(3), Uptime(5) - Uptime(2))
+    }
+}
\ No newline at end of file
diff --git a/ui/ui-framework/api/0.1.0-dev03.txt b/ui/ui-framework/api/0.1.0-dev03.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/0.1.0-dev03.txt
+++ b/ui/ui-framework/api/0.1.0-dev03.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/api/current.txt b/ui/ui-framework/api/current.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/current.txt
+++ b/ui/ui-framework/api/current.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-framework/api/public_plus_experimental_0.1.0-dev03.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-framework/api/public_plus_experimental_0.1.0-dev03.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/api/public_plus_experimental_current.txt b/ui/ui-framework/api/public_plus_experimental_current.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/public_plus_experimental_current.txt
+++ b/ui/ui-framework/api/public_plus_experimental_current.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/api/restricted_0.1.0-dev03.txt b/ui/ui-framework/api/restricted_0.1.0-dev03.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-framework/api/restricted_0.1.0-dev03.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/api/restricted_current.txt b/ui/ui-framework/api/restricted_current.txt
index 34c0535..360ed8b 100644
--- a/ui/ui-framework/api/restricted_current.txt
+++ b/ui/ui-framework/api/restricted_current.txt
@@ -306,7 +306,7 @@
 
   public final class VelocityTracker {
     ctor public VelocityTracker();
-    method public void addPosition(androidx.ui.core.Timestamp time, androidx.ui.core.PxPosition position);
+    method public void addPosition(androidx.ui.core.Uptime uptime, androidx.ui.core.PxPosition position);
     method public androidx.ui.core.Velocity calculateVelocity();
     method public void resetTracking();
   }
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/gesture/RawDragGestureDetector.kt b/ui/ui-framework/src/main/java/androidx/ui/core/gesture/RawDragGestureDetector.kt
index 5666013b..1ee03d3 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/gesture/RawDragGestureDetector.kt
+++ b/ui/ui-framework/src/main/java/androidx/ui/core/gesture/RawDragGestureDetector.kt
@@ -203,7 +203,7 @@
                             velocityTrackers[it.id] = VelocityTracker()
                                 .apply {
                                     addPosition(
-                                        it.current.timestamp!!,
+                                        it.current.uptime!!,
                                         it.current.position!!
                                     )
                                 }
@@ -236,7 +236,7 @@
                         // position information, but rather vector information about movement.
                         if (pass == PointerEventPass.PostUp) {
                             velocityTracker.addPosition(
-                                it.current.timestamp!!,
+                                it.current.uptime!!,
                                 it.current.position!!
                             )
                         }
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/gesture/util/VelocityTracker.kt b/ui/ui-framework/src/main/java/androidx/ui/core/gesture/util/VelocityTracker.kt
index c4165f9..ab12871 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/gesture/util/VelocityTracker.kt
+++ b/ui/ui-framework/src/main/java/androidx/ui/core/gesture/util/VelocityTracker.kt
@@ -18,7 +18,7 @@
 
 import androidx.ui.core.Duration
 import androidx.ui.core.PxPosition
-import androidx.ui.core.Timestamp
+import androidx.ui.core.Uptime
 import androidx.ui.core.Velocity
 import androidx.ui.core.inMilliseconds
 import androidx.ui.core.px
@@ -57,9 +57,9 @@
     // TODO(shepshapard): VelocityTracker needs to be updated to be passed vectors instead of
     //   positions. For velocity tracking, the only thing that is important is the change in
     //   position over time.
-    fun addPosition(time: Timestamp, position: PxPosition) {
+    fun addPosition(uptime: Uptime, position: PxPosition) {
         index = (index + 1) % HistorySize
-        samples[index] = PointAtTime(position, time)
+        samples[index] = PointAtTime(position, uptime)
     }
 
     /**
@@ -157,7 +157,7 @@
     }
 }
 
-private data class PointAtTime(val point: PxPosition, val time: Timestamp)
+private data class PointAtTime(val point: PxPosition, val time: Uptime)
 
 /**
  * A two dimensional velocity estimate.
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/DoubleTapGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/DoubleTapGestureDetectorTest.kt
index e881c32..b27697b 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/DoubleTapGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/DoubleTapGestureDetectorTest.kt
@@ -21,7 +21,6 @@
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.ipx
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -70,8 +69,8 @@
 
     @Test
     fun pointerInputHandler_downUp_onDoubleTapNotCalled() {
-        val down = down(timestamp = 0L.millisecondsToTimestamp())
-        val up = down.up(timestamp = 1L.millisecondsToTimestamp())
+        val down = down(duration = 0.milliseconds)
+        val up = down.up(duration = 1.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
@@ -81,9 +80,9 @@
 
     @Test
     fun pointerInputHandler_downUpDownWithinTimeout_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
@@ -95,9 +94,9 @@
 
     @Test
     fun pointerInputHandler_downUpDownOutsideTimeout_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
@@ -109,10 +108,10 @@
 
     @Test
     fun pointerInputHandler_downUpDownOutsideTimeoutUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -125,11 +124,11 @@
 
     @Test
     fun pointerInputHandler_downMoveConsumedUpDownInsideTimeoutUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val moveConsumed = down1.moveTo(1L.millisecondsToTimestamp(), x = 1f).consume(dx = 1f)
-        val up1 = moveConsumed.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val moveConsumed = down1.moveTo(1.milliseconds, x = 1f).consume(dx = 1f)
+        val up1 = moveConsumed.up(duration = 2.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(moveConsumed)
@@ -143,11 +142,11 @@
 
     @Test
     fun pointerInputHandler_downUpDownInsideTimeoutMoveConsumedUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
-        val moveConsumed = down2.moveTo(101L.millisecondsToTimestamp(), x = 1f).consume(dx = 1f)
-        val up2 = moveConsumed.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
+        val moveConsumed = down2.moveTo(101.milliseconds, x = 1f).consume(dx = 1f)
+        val up2 = moveConsumed.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -161,14 +160,14 @@
 
     @Test
     fun pointerInputHandler_2Down1MoveConsumedUpDownInsideTimeoutUp_onDoubleTapNotCalled() {
-        val down1A = down(0, timestamp = 0L.millisecondsToTimestamp())
-        val down1B = down(1, timestamp = 0L.millisecondsToTimestamp())
-        val moveConsumed1A = down1A.moveTo(1L.millisecondsToTimestamp(), x = 1f).consume(dx = 1f)
-        val move1B = down1B.moveTo(1L.millisecondsToTimestamp())
-        val up1A = moveConsumed1A.up(timestamp = 2L.millisecondsToTimestamp())
-        val up1B = move1B.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1A = down(0, 0.milliseconds)
+        val down1B = down(1, 0.milliseconds)
+        val moveConsumed1A = down1A.moveTo(1.milliseconds, x = 1f).consume(dx = 1f)
+        val move1B = down1B.moveTo(1.milliseconds)
+        val up1A = moveConsumed1A.up(duration = 2.milliseconds)
+        val up1B = move1B.up(duration = 2.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1A, down1B)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(moveConsumed1A, move1B)
@@ -182,14 +181,14 @@
 
     @Test
     fun pointerInputHandler_downUp2DownInsideTimeout1MoveConsumedUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up2 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2A = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val down2B = down(1, timestamp = 100L.millisecondsToTimestamp())
-        val moveConsumed2A = down2A.moveTo(101L.millisecondsToTimestamp(), x = 1f).consume(dx = 1f)
-        val move2B = down2B.moveTo(101L.millisecondsToTimestamp())
-        val up2A = moveConsumed2A.up(timestamp = 102L.millisecondsToTimestamp())
-        val up2B = move2B.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up2 = down1.up(duration = 1.milliseconds)
+        val down2A = down(0, 100.milliseconds)
+        val down2B = down(1, 100.milliseconds)
+        val moveConsumed2A = down2A.moveTo(101.milliseconds, x = 1f).consume(dx = 1f)
+        val move2B = down2B.moveTo(101.milliseconds)
+        val up2A = moveConsumed2A.up(duration = 102.milliseconds)
+        val up2B = move2B.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up2)
@@ -203,10 +202,10 @@
 
     @Test
     fun pointerInputHandler_downConsumedUpDownWithinTimeoutUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp()).consumeDownChange()
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds).consumeDownChange()
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(0, 100.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -219,10 +218,10 @@
 
     @Test
     fun pointerInputHandler_downUpConsumedDownWithinTimeoutUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp()).consumeDownChange()
-        val down2 = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds).consumeDownChange()
+        val down2 = down(0, 100.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -235,10 +234,10 @@
 
     @Test
     fun pointerInputHandler_downUpDownConsumedWithinTimeoutUp_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(0, timestamp = 100L.millisecondsToTimestamp()).consumeDownChange()
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(0, 100.milliseconds).consumeDownChange()
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -251,10 +250,10 @@
 
     @Test
     fun pointerInputHandler_downUpDownWithinTimeoutUpConsumed_onDoubleTapNotCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp()).consumeDownChange()
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(0, 100.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds).consumeDownChange()
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -267,14 +266,14 @@
 
     @Test
     fun pointerInputHandler_2down1Up1DownWithinTimeout1Up_onDoubleTapNotCalled() {
-        val down1A = down(0, timestamp = 0L.millisecondsToTimestamp())
-        val down1B = down(1, timestamp = 0L.millisecondsToTimestamp())
-        val move1A1 = down1A.moveTo(2L.millisecondsToTimestamp())
-        val up2B = down1B.up(timestamp = 2L.millisecondsToTimestamp())
-        val move1A2 = move1A1.moveTo(101L.millisecondsToTimestamp())
-        val down2 = down(id = 1, timestamp = 101L.millisecondsToTimestamp())
-        val move1A3 = move1A2.moveTo(102L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1A = down(0, 0.milliseconds)
+        val down1B = down(1, 0.milliseconds)
+        val move1A1 = down1A.moveTo(2.milliseconds)
+        val up2B = down1B.up(duration = 2.milliseconds)
+        val move1A2 = move1A1.moveTo(101.milliseconds)
+        val down2 = down(1, 101.milliseconds)
+        val move1A3 = move1A2.moveTo(102.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1A, down1B)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move1A1, up2B)
@@ -287,12 +286,12 @@
 
     @Test
     fun pointerInputHandler_1down1Up2DownWithinTimeout1Up_onDoubleTapNotCalled() {
-        val down1 = down(id = 0, timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2A = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val down2B = down(1, timestamp = 100L.millisecondsToTimestamp())
-        val move2A = down2A.moveTo(timestamp = 101L.millisecondsToTimestamp())
-        val up2B = down2B.up(timestamp = 101L.millisecondsToTimestamp())
+        val down1 = down(0, 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2A = down(0, 100.milliseconds)
+        val down2B = down(1, 100.milliseconds)
+        val move2A = down2A.moveTo(101.milliseconds)
+        val up2B = down2B.up(duration = 101.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -305,11 +304,11 @@
 
     @Test
     fun pointerInputHandler_downMoveOutOfBoundsUpDownUp_onDoubleTapNotCalled() {
-        val down = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        val move = down.moveTo(1L.millisecondsToTimestamp(), 1f, 1f)
-        val up = move.up(timestamp = 12L.millisecondsToTimestamp())
-        val down2 = down(0, 13L.millisecondsToTimestamp(), 0f, 0f)
-        val up2 = down2.up(timestamp = 14L.millisecondsToTimestamp())
+        val down = down(0, 0.milliseconds, 0f, 0f)
+        val move = down.moveTo(1.milliseconds, 1f, 1f)
+        val up = move.up(duration = 12.milliseconds)
+        val down2 = down(0, 13.milliseconds, 0f, 0f)
+        val up2 = down2.up(duration = 14.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down, IntPxSize(1.ipx, 1.ipx))
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move, IntPxSize(1.ipx, 1.ipx))
@@ -322,11 +321,11 @@
 
     @Test
     fun pointerInputHandler_downUpDownMoveOutOfBoundsUp_onDoubleTapNotCalled() {
-        val down = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        val up = down.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(0, 2L.millisecondsToTimestamp(), 0f, 0f)
-        val move2 = down2.moveTo(3L.millisecondsToTimestamp(), 1f, 1f)
-        val up2 = down2.up(timestamp = 4L.millisecondsToTimestamp())
+        val down = down(0, 0.milliseconds, 0f, 0f)
+        val up = down.up(duration = 1.milliseconds)
+        val down2 = down(0, 2.milliseconds, 0f, 0f)
+        val move2 = down2.moveTo(3.milliseconds, 1f, 1f)
+        val up2 = down2.up(duration = 4.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down, IntPxSize(1.ipx, 1.ipx))
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up, IntPxSize(1.ipx, 1.ipx))
@@ -341,10 +340,10 @@
 
     @Test
     fun pointerInputHandler_downUpDownInsideTimeoutUp_onDoubleTapCalled() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 101L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
+        val up2 = down2.up(duration = 101.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -357,11 +356,11 @@
 
     @Test
     fun pointerInputHandler_downMoveUpDownInsideTimeoutUp_onDoubleTapCalled() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val move = down1.moveTo(1L.millisecondsToTimestamp(), x = 1f)
-        val up1 = move.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val move = down1.moveTo(1.milliseconds, x = 1f)
+        val up1 = move.up(duration = 2.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move)
@@ -375,11 +374,11 @@
 
     @Test
     fun pointerInputHandler_downUpDownInsideTimeoutMoveUp_onDoubleTapCalled() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 10L.millisecondsToTimestamp())
-        val move = down2.moveTo(101L.millisecondsToTimestamp(), x = 1f)
-        val up2 = move.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 10.milliseconds)
+        val move = down2.moveTo(101.milliseconds, x = 1f)
+        val up2 = move.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -393,14 +392,14 @@
 
     @Test
     fun pointerInputHandler_2Down1MoveUpDownInsideTimeoutUp_onDoubleTapCalled() {
-        val down1A = down(0, timestamp = 0L.millisecondsToTimestamp())
-        val down1B = down(1, timestamp = 0L.millisecondsToTimestamp())
-        val move1A = down1A.moveTo(1L.millisecondsToTimestamp(), x = 1f)
-        val move1B = down1B.moveTo(1L.millisecondsToTimestamp())
-        val up1A = move1A.up(timestamp = 2L.millisecondsToTimestamp())
-        val up1B = move1B.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1A = down(0, 0.milliseconds)
+        val down1B = down(1, 0.milliseconds)
+        val move1A = down1A.moveTo(1.milliseconds, x = 1f)
+        val move1B = down1B.moveTo(1.milliseconds)
+        val up1A = move1A.up(duration = 2.milliseconds)
+        val up1B = move1B.up(duration = 2.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1A, down1B)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move1A, move1B)
@@ -414,14 +413,14 @@
 
     @Test
     fun pointerInputHandler_downUp2DownInsideTimeout1MoveUp_onDoubleTapCalled() {
-        val down1 = down(timestamp = 0L.millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2A = down(0, timestamp = 100L.millisecondsToTimestamp())
-        val down2B = down(1, timestamp = 100L.millisecondsToTimestamp())
-        val move2A = down2A.moveTo(101L.millisecondsToTimestamp(), x = 1f)
-        val move2B = down2B.moveTo(101L.millisecondsToTimestamp())
-        val up2A = move2A.up(timestamp = 102L.millisecondsToTimestamp())
-        val up2B = move2B.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2A = down(0, 100.milliseconds)
+        val down2B = down(1, 100.milliseconds)
+        val move2A = down2A.moveTo(101.milliseconds, x = 1f)
+        val move2B = down2B.moveTo(101.milliseconds)
+        val up2A = move2A.up(duration = 102.milliseconds)
+        val up2B = move2B.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -435,13 +434,13 @@
 
     @Test
     fun pointerInputHandler_downMoveOutOfBoundsUpDownUpDownUp_onDoubleTapCalledOnce() {
-        val down = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        val move = down.moveTo(1L.millisecondsToTimestamp(), 1f, 1f)
-        val up = move.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(0, 3L.millisecondsToTimestamp(), 0f, 0f)
-        val up2 = down2.up(timestamp = 4L.millisecondsToTimestamp())
-        val down3 = down(0, 5L.millisecondsToTimestamp(), 0f, 0f)
-        val up3 = down3.up(6L.millisecondsToTimestamp())
+        val down = down(0, 0.milliseconds, 0f, 0f)
+        val move = down.moveTo(1.milliseconds, 1f, 1f)
+        val up = move.up(duration = 2.milliseconds)
+        val down2 = down(0, 3.milliseconds, 0f, 0f)
+        val up2 = down2.up(duration = 4.milliseconds)
+        val down3 = down(0, 5.milliseconds, 0f, 0f)
+        val up3 = down3.up(6.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down, IntPxSize(1.ipx, 1.ipx))
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move, IntPxSize(1.ipx, 1.ipx))
@@ -457,15 +456,15 @@
 
     @Test
     fun pointerInputHandler_downUpDownMoveOutOfBoundsUpDownUpDownUp_onDoubleTapCalledOnce() {
-        val down = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        val up = down.up(timestamp = 2L.millisecondsToTimestamp())
-        val down2 = down(0, 3L.millisecondsToTimestamp(), 0f, 0f)
-        val move2 = down2.moveTo(1L.millisecondsToTimestamp(), 1f, 1f)
-        val up2 = move2.up(timestamp = 4L.millisecondsToTimestamp())
-        val down3 = down(0, 5L.millisecondsToTimestamp(), 0f, 0f)
-        val up3 = down3.up(6L.millisecondsToTimestamp())
-        val down4 = down(0, 7L.millisecondsToTimestamp(), 0f, 0f)
-        val up4 = down4.up(8L.millisecondsToTimestamp())
+        val down = down(0, 0.milliseconds, 0f, 0f)
+        val up = down.up(duration = 2.milliseconds)
+        val down2 = down(0, 3.milliseconds, 0f, 0f)
+        val move2 = down2.moveTo(1.milliseconds, 1f, 1f)
+        val up2 = move2.up(duration = 4.milliseconds)
+        val down3 = down(0, 5.milliseconds, 0f, 0f)
+        val up3 = down3.up(6.milliseconds)
+        val down4 = down(0, 7.milliseconds, 0f, 0f)
+        val up4 = down4.up(8.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down, IntPxSize(1.ipx, 1.ipx))
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up, IntPxSize(1.ipx, 1.ipx))
@@ -485,10 +484,10 @@
 
     @Test
     fun pointerInputHandler_downUpDownUpAllAtOrigin_onDoubleTapCalledWithOrigin() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 101L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
+        val up2 = down2.up(duration = 101.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -501,11 +500,11 @@
 
     @Test
     fun pointerInputHandler_downUpDownMoveUp_onDoubleTapCalledWithFinalMovePosition() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
-        val move2 = down2.moveTo(101L.millisecondsToTimestamp(), 3f, 5f)
-        val up2 = move2.up(timestamp = 102L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
+        val move2 = down2.moveTo(101.milliseconds, 3f, 5f)
+        val up2 = move2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -519,15 +518,15 @@
 
     @Test
     fun pointerInputHandler_downUp2Down2Move1UpThen1Up_onDoubleTapCalledWithFinalFingerPosition() {
-        val down1 = down(timestamp = (0L).millisecondsToTimestamp())
-        val up1 = down1.up(timestamp = 1L.millisecondsToTimestamp())
-        val down2A = down(id = 0, timestamp = 100L.millisecondsToTimestamp())
-        val down2B = down(id = 1, timestamp = 100L.millisecondsToTimestamp())
-        val move2A = down2A.moveTo(101L.millisecondsToTimestamp(), 3f, 5f)
-        val move2B1 = down2B.moveTo(101L.millisecondsToTimestamp(), 7f, 11f)
-        val up2A = move2A.up(timestamp = 102L.millisecondsToTimestamp())
-        val move2B2 = move2B1.moveTo(timestamp = 102L.millisecondsToTimestamp(), x = 7f, y = 11f)
-        val up2B = move2B2.up(timestamp = 103L.millisecondsToTimestamp())
+        val down1 = down(duration = 0.milliseconds)
+        val up1 = down1.up(duration = 1.milliseconds)
+        val down2A = down(0, 100.milliseconds)
+        val down2B = down(1, 100.milliseconds)
+        val move2A = down2A.moveTo(101.milliseconds, 3f, 5f)
+        val move2B1 = down2B.moveTo(101.milliseconds, 7f, 11f)
+        val up2A = move2A.up(duration = 102.milliseconds)
+        val move2B2 = move2B1.moveTo(102.milliseconds, x = 7f, y = 11f)
+        val up2B = move2B2.up(duration = 103.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down1)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up1)
@@ -552,7 +551,7 @@
     @Test
     fun pointerInputHandler_downUp_upNotConsumed() {
         val down = down()
-        val up = down.up(1L.millisecondsToTimestamp())
+        val up = down.up(1.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
         assertThat(result[0].consumed.downChange).isFalse()
@@ -561,8 +560,8 @@
     @Test
     fun pointerInputHandler_downUpDownInsideTimeout_lastDownNotConsumed() {
         val down = down()
-        val up = down.up(1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
+        val up = down.up(1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
@@ -575,9 +574,9 @@
     @Test
     fun pointerInputHandler_downUpDownOutsideTimeoutUp_lastUpNotConsumed() {
         val down = down()
-        val up = down.up(1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 101L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 102L.millisecondsToTimestamp())
+        val up = down.up(1.milliseconds)
+        val down2 = down(duration = 101.milliseconds)
+        val up2 = down2.up(duration = 102.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
@@ -591,9 +590,9 @@
     @Test
     fun pointerInputHandler_downUpDownInsideTimeoutUp_lastUpConsumed() {
         val down = down()
-        val up = down.up(1L.millisecondsToTimestamp())
-        val down2 = down(timestamp = 100L.millisecondsToTimestamp())
-        val up2 = down2.up(timestamp = 101L.millisecondsToTimestamp())
+        val up = down.up(1.milliseconds)
+        val down2 = down(duration = 100.milliseconds)
+        val up2 = down2.up(duration = 101.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/LongPressGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/LongPressGestureDetectorTest.kt
index 01bb32c..788d6f3 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/LongPressGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/LongPressGestureDetectorTest.kt
@@ -22,7 +22,6 @@
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.ipx
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -104,7 +103,7 @@
     @Test
     fun pointerInputHandler_DownUpConsumed_onLongPressNotCalled() {
         val down = down(0)
-        val up = down.up(50L.millisecondsToTimestamp()).consumeDownChange()
+        val up = down.up(50.milliseconds).consumeDownChange()
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down))
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
@@ -117,7 +116,7 @@
     @Test
     fun pointerInputHandler_DownUpNotConsumed_onLongPressNotCalled() {
         val down = down(0)
-        val up = down.up(50L.millisecondsToTimestamp())
+        val up = down.up(50.milliseconds)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down))
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
@@ -134,9 +133,9 @@
 
         val down0 = down(0)
 
-        val up0 = down0.up(50L.millisecondsToTimestamp())
+        val up0 = down0.up(50.milliseconds)
 
-        val down1 = down(1, 51L.millisecondsToTimestamp())
+        val down1 = down(1, duration = 51.milliseconds)
 
         // Act
 
@@ -171,7 +170,7 @@
     fun pointerInputHandler_downMoveOutOfBoundsWait_onLongPressNotCalled() {
         var pointer = down()
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, 1f, 0f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
         testContext.advanceTimeBy(100, TimeUnit.MILLISECONDS)
 
@@ -198,13 +197,13 @@
     fun pointerInputHandler_downMoveOutOfBoundsWaitUpThenDownWait_onLongPressCalledOnce() {
         var pointer = down()
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, 1f, 0f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
         testContext.advanceTimeBy(100, TimeUnit.MILLISECONDS)
-        pointer = pointer.up(105L.millisecondsToTimestamp())
+        pointer = pointer.up(105.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
-        pointer = down(timestamp = 200L.millisecondsToTimestamp())
+        pointer = down(duration = 200.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
         testContext.advanceTimeBy(100, TimeUnit.MILLISECONDS)
 
@@ -218,11 +217,11 @@
 
         val down0 = down(0)
 
-        val move0 = down0.moveTo(50L.millisecondsToTimestamp(), 0f, 0f)
-        val down1 = down(1, 50L.millisecondsToTimestamp())
+        val move0 = down0.moveTo(50.milliseconds, 0f, 0f)
+        val down1 = down(1, duration = 50.milliseconds)
 
-        val up0 = move0.up(75L.millisecondsToTimestamp())
-        val move1 = down1.moveTo(75L.millisecondsToTimestamp(), 0f, 0f)
+        val up0 = move0.up(75.milliseconds)
+        val move1 = down1.moveTo(75.milliseconds, 0f, 0f)
 
         // Act
 
@@ -281,7 +280,7 @@
     @Test
     fun pointerInputHandler_downMove_onLongPressCalledWithMovePosition() {
         val down = down(0, x = 13f, y = 17f)
-        val move = down.moveTo(50L.millisecondsToTimestamp(), 7f, 5f)
+        val move = down.moveTo(50.milliseconds, 7f, 5f)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down))
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
@@ -296,7 +295,7 @@
         val down0 = down(0, x = 13f, y = 17f)
 
         val move0 = down0.moveBy(50.milliseconds, 0f, 0f)
-        val down1 = down(1, 50L.millisecondsToTimestamp(), x = 11f, y = 19f)
+        val down1 = down(1, 50.milliseconds, 11f, 19f)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down0))
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
@@ -310,10 +309,10 @@
     fun pointerInputHandler_down0ThenDown1ThenUp0_onLongPressCalledWithDown1Position() {
         val down0 = down(0, x = 13f, y = 17f)
 
-        val move0 = down0.moveTo(50L.millisecondsToTimestamp(), 27f, 29f)
-        val down1 = down(1, 50L.millisecondsToTimestamp(), x = 11f, y = 19f)
+        val move0 = down0.moveTo(50.milliseconds, 27f, 29f)
+        val down1 = down(1, 50.milliseconds, 11f, 19f)
 
-        val up0 = move0.up(75L.millisecondsToTimestamp())
+        val up0 = move0.up(75.milliseconds)
         val move1 = down1.moveBy(25.milliseconds, 0f, 0f)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down0))
@@ -330,8 +329,8 @@
     fun pointerInputHandler_down0ThenMove0AndDown1_onLongPressCalledWithMove0Position() {
         val down0 = down(0, x = 13f, y = 17f)
 
-        val move0 = down0.moveTo(50L.millisecondsToTimestamp(), 27f, 29f)
-        val down1 = down(1, 50L.millisecondsToTimestamp(), x = 11f, y = 19f)
+        val move0 = down0.moveTo(50.milliseconds, 27f, 29f)
+        val down1 = down(1, 50.milliseconds, 11f, 19f)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down0))
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
@@ -346,10 +345,10 @@
         val down0 = down(0, x = 13f, y = 17f)
 
         val move0 = down0.moveBy(25.milliseconds, 0f, 0f)
-        val down1 = down(1, 25L.millisecondsToTimestamp(), x = 11f, y = 19f)
+        val down1 = down(1, 25.milliseconds, 11f, 19f)
 
-        val up0 = move0.up(50L.millisecondsToTimestamp())
-        val move1 = down1.moveTo(50L.millisecondsToTimestamp(), 27f, 23f)
+        val up0 = move0.up(50.milliseconds)
+        val move1 = down1.moveTo(50.milliseconds, 27f, 23f)
 
         mRecognizer.pointerInputHandler.invokeOverAllPasses(listOf(down0))
         testContext.advanceTimeBy(25, TimeUnit.MILLISECONDS)
@@ -379,7 +378,7 @@
 
         // Arrange
 
-        val down0 = down(0, 0L.millisecondsToTimestamp())
+        val down0 = down(0, duration = 0.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(
             listOf(
                 down0
@@ -389,8 +388,8 @@
         // Act
 
         testContext.advanceTimeBy(10, TimeUnit.MILLISECONDS)
-        val move0 = down0.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        val down1 = down(0, 10L.millisecondsToTimestamp())
+        val move0 = down0.moveTo(10.milliseconds, 0f, 0f)
+        val down1 = down(0, duration = 10.milliseconds)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(
             listOf(
                 move0, down1
@@ -408,7 +407,7 @@
 
         // Arrange
 
-        val down0 = down(0, 0L.millisecondsToTimestamp())
+        val down0 = down(0, duration = 0.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(
             listOf(
                 down0
@@ -418,7 +417,7 @@
         // Act
 
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
-        val up0 = down0.up(50L.millisecondsToTimestamp())
+        val up0 = down0.up(50.milliseconds)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(
             listOf(
                 up0
@@ -435,7 +434,7 @@
 
         // Arrange
 
-        val down0 = down(0, 0L.millisecondsToTimestamp())
+        val down0 = down(0, duration = 0.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(
             listOf(
                 down0
@@ -445,7 +444,7 @@
         // Act
 
         testContext.advanceTimeBy(101, TimeUnit.MILLISECONDS)
-        val up0 = down0.up(100L.millisecondsToTimestamp())
+        val up0 = down0.up(100.milliseconds)
         val result = mRecognizer.pointerInputHandler.invoke(
             listOf(up0),
             PointerEventPass.InitialDown,
@@ -462,16 +461,16 @@
 
         // Arrange
 
-        var pointer = down(0, 0L.millisecondsToTimestamp())
+        var pointer = down(0, duration = 0.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer)
         testContext.advanceTimeBy(50, TimeUnit.MILLISECONDS)
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 5f).consume(1f)
+        pointer = pointer.moveTo(50.milliseconds, 5f).consume(1f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer)
 
         // Act
 
         testContext.advanceTimeBy(51, TimeUnit.MILLISECONDS)
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer)
 
         // Assert
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressIndicatorGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressIndicatorGestureDetectorTest.kt
index 5d79447..04f72d4 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressIndicatorGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressIndicatorGestureDetectorTest.kt
@@ -22,7 +22,6 @@
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.ipx
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -81,8 +80,8 @@
     fun pointerInputHandler_downDown_onStartCalledOnce() {
         var pointer0 = down(0)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0))
-        pointer0 = pointer0.moveTo(timestamp = 1L.millisecondsToTimestamp())
-        val pointer1 = down(1, timestamp = 1L.millisecondsToTimestamp())
+        pointer0 = pointer0.moveTo(1.milliseconds)
+        val pointer1 = down(1, 1.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
 
         verify(recognizer.onStart!!).invoke(any())
@@ -93,11 +92,11 @@
         var pointer0 = down(0)
         var pointer1 = down(1)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
-        pointer0 = pointer0.up(100L.millisecondsToTimestamp())
-        pointer1 = pointer1.moveTo(100L.millisecondsToTimestamp())
+        pointer0 = pointer0.up(100.milliseconds)
+        pointer1 = pointer1.moveTo(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
-        pointer0 = down(0, 200L.millisecondsToTimestamp())
-        pointer1 = pointer1.moveTo(200L.millisecondsToTimestamp())
+        pointer0 = down(0, duration = 200.milliseconds)
+        pointer1 = pointer1.moveTo(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
 
         verify(recognizer.onStart!!).invoke(any())
@@ -107,9 +106,9 @@
     fun pointerInputHandler_1DownMoveOutside2ndDown_onStartOnlyCalledOnce() {
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer0, IntPxSize(5.ipx, 5.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 10f, 0f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 10f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer0, IntPxSize(5.ipx, 5.ipx))
-        pointer0 = pointer0.moveTo(200L.millisecondsToTimestamp())
+        pointer0 = pointer0.moveTo(200.milliseconds)
         val pointer1 = down(1, x = 0f, y = 0f)
 
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer0, pointer1)
@@ -123,9 +122,9 @@
     fun pointerInputHandler_downMoveConsumedUp_onStopNotCalled() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(100L.millisecondsToTimestamp(), 5f).consume(1f)
+        pointer = pointer.moveTo(100.milliseconds, 5f).consume(1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(200L.millisecondsToTimestamp())
+        pointer = pointer.up(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onStop!!, never()).invoke()
@@ -135,7 +134,7 @@
     fun pointerInputHandler_downConsumedUp_onStopNotCalled() {
         var pointer = down().consumeDownChange()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onStop!!, never()).invoke()
@@ -146,8 +145,8 @@
         var pointer0 = down(0)
         var pointer1 = down(1)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp())
-        pointer1 = pointer1.up(100L.millisecondsToTimestamp())
+        pointer0 = pointer0.moveTo(100.milliseconds)
+        pointer1 = pointer1.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
 
         verify(recognizer.onStop!!, never()).invoke()
@@ -159,7 +158,7 @@
     fun pointerInputHandler_downUp_onStopCalledOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onStop!!).invoke()
@@ -169,7 +168,7 @@
     fun pointerInputHandler_downUpConsumed_onStopCalledOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp()).consumeDownChange()
+        pointer = pointer.up(100.milliseconds).consumeDownChange()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onStop!!).invoke()
@@ -179,9 +178,9 @@
     fun pointerInputHandler_downMoveUp_onStopCalledOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(100L.millisecondsToTimestamp(), 5f)
+        pointer = pointer.moveTo(100.milliseconds, 5f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(200L.millisecondsToTimestamp())
+        pointer = pointer.up(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onStop!!).invoke()
@@ -192,8 +191,8 @@
         var pointer1 = down(0)
         var pointer2 = down(1)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer1, pointer2))
-        pointer1 = pointer1.up(100L.millisecondsToTimestamp())
-        pointer2 = pointer2.up(100L.millisecondsToTimestamp())
+        pointer1 = pointer1.up(100.milliseconds)
+        pointer2 = pointer2.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer1, pointer2))
 
         verify(recognizer.onStop!!).invoke()
@@ -215,7 +214,7 @@
     fun pointerInputHandler_downUp_onCancelNotCalled() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onCancel!!, never()).invoke()
@@ -225,9 +224,9 @@
     fun pointerInputHandler_downMoveUp_onCancelNotCalled() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(100L.millisecondsToTimestamp(), 5f)
+        pointer = pointer.moveTo(100.milliseconds, 5f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onCancel!!, never()).invoke()
@@ -239,8 +238,8 @@
         var pointer1 = down(0, x = 4f, y = 4f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(listOf(pointer0, pointer1), IntPxSize(5.ipx, 5.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 0f, 0f)
-        pointer1 = pointer1.moveTo(100L.millisecondsToTimestamp(), 5f, 4f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 0f, 0f)
+        pointer1 = pointer1.moveTo(100.milliseconds, 5f, 4f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(listOf(pointer0, pointer1), IntPxSize(5.ipx, 5.ipx))
 
@@ -287,8 +286,8 @@
     fun pointerInputHandler_2Down1MoveConsumedTheOtherMoveConsume_onCancelCalledOnce() {
         var pointer0 = down(0)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp())
-        var pointer1 = down(1, 100L.millisecondsToTimestamp())
+        pointer0 = pointer0.moveTo(100.milliseconds)
+        var pointer1 = down(1, duration = 100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer0, pointer1))
         pointer0 = pointer0.moveBy(100L.milliseconds, 5f).consume(5f)
         pointer1 = pointer1.moveBy(100L.milliseconds)
@@ -305,7 +304,7 @@
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), -1f, 0f)
+        pointer0 = pointer0.moveTo(100.milliseconds, -1f, 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
 
@@ -317,7 +316,7 @@
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 1f, 0f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 1f, 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
 
@@ -329,7 +328,7 @@
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 0f, -1f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 0f, -1f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
 
@@ -341,7 +340,7 @@
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 0f, 1f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
 
@@ -354,8 +353,8 @@
         var pointer1 = down(1, x = 4f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(listOf(pointer0, pointer1), IntPxSize(5.ipx, 5.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 0f, 5f)
-        pointer1 = pointer1.moveTo(100L.millisecondsToTimestamp(), 5f, 0f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 0f, 5f)
+        pointer1 = pointer1.moveTo(100.milliseconds, 5f, 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(listOf(pointer0, pointer1), IntPxSize(5.ipx, 5.ipx))
 
@@ -367,13 +366,13 @@
         var pointer0 = down(0, x = 0f, y = 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(100L.millisecondsToTimestamp(), 0f, 1f)
+        pointer0 = pointer0.moveTo(100.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(200L.millisecondsToTimestamp(), 0f, 0f)
+        pointer0 = pointer0.moveTo(200.milliseconds, 0f, 0f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
-        pointer0 = pointer0.moveTo(300L.millisecondsToTimestamp(), 0f, 1f)
+        pointer0 = pointer0.moveTo(300.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler
             .invokeOverAllPasses(pointer0, IntPxSize(1.ipx, 1.ipx))
 
@@ -387,9 +386,9 @@
         repeat(2) {
             var pointer = down(0, x = 0f, y = 0f)
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-            pointer = pointer.moveTo(time.millisecondsToTimestamp(), 0f, 1f)
+            pointer = pointer.moveTo(time.milliseconds, 0f, 1f)
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-            pointer = pointer.up(time.millisecondsToTimestamp())
+            pointer = pointer.up(time.milliseconds)
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
             time += 100L
         }
@@ -459,7 +458,7 @@
     fun cancelHandler_downUpCancel_justStartAndStopCalledInOrderOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
         recognizer.cancelHandler.invoke()
 
@@ -474,7 +473,7 @@
     fun cancelHandler_downMoveCancel_justStartAndCancelCalledInOrderOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f)
+        pointer = pointer.moveTo(50.milliseconds, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
         recognizer.cancelHandler.invoke()
 
@@ -489,7 +488,7 @@
     fun cancelHandler_downMoveConsumedCancel_justStartAndCancelCalledInOrderOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f).consume(1f)
+        pointer = pointer.moveTo(50.milliseconds, 1f).consume(1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
         recognizer.cancelHandler.invoke()
 
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressReleasedGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressReleasedGestureDetectorTest.kt
index 3c889f73..f3ba459c0 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressReleasedGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/PressReleasedGestureDetectorTest.kt
@@ -20,7 +20,7 @@
 import androidx.ui.core.PointerEventPass
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.ipx
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
 import androidx.ui.testutils.invokeOverAllPasses
@@ -58,7 +58,7 @@
     fun pointerInputHandler_downConsumedUp_onReleaseNotCalled() {
         var pointer = down().consumeDownChange()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -68,9 +68,9 @@
     fun pointerInputHandler_downMoveConsumedUp_onReleaseNotCalled() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(100L.millisecondsToTimestamp(), 5f).consume(5f)
+        pointer = pointer.moveTo(100.milliseconds, 5f).consume(5f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(200L.millisecondsToTimestamp())
+        pointer = pointer.up(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -80,7 +80,7 @@
     fun pointerInputHandler_downUpConsumed_onReleaseNotCalled() {
         var pointer = down().consumeDownChange()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp()).consumeDownChange()
+        pointer = pointer.up(100.milliseconds).consumeDownChange()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -90,9 +90,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsNegativeXUp_onReleaseNotCalled() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), -1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, -1f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -102,9 +102,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsPositiveXUp_onReleaseNotCalled() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, 1f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -114,9 +114,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsNegativeYUp_onReleaseNotCalled() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 0f, -1f)
+        pointer = pointer.moveTo(50.milliseconds, 0f, -1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -126,9 +126,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsPositiveYUp_onReleaseNotCalled() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 0f, 1f)
+        pointer = pointer.moveTo(50.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
         verify(recognizer.onRelease!!, never()).invoke()
@@ -138,7 +138,7 @@
     fun pointerInputHandler_downUp_onReleaseCalledOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onRelease!!).invoke()
@@ -148,9 +148,9 @@
     fun pointerInputHandler_downMoveUp_onReleaseCalledOnce() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.moveTo(100L.millisecondsToTimestamp(), 5f)
+        pointer = pointer.moveTo(100.milliseconds, 5f)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(200L.millisecondsToTimestamp())
+        pointer = pointer.up(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
 
         verify(recognizer.onRelease!!).invoke()
@@ -160,13 +160,13 @@
     fun pointerInputHandler_downMoveOutsideBoundsUpDownUp_onReleaseCalledOnce() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 0f, 1f)
+        pointer = pointer.moveTo(50.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = down(timestamp = 150L.millisecondsToTimestamp(), x = 0f, y = 0f)
+        pointer = down(duration = 150.milliseconds, x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(200L.millisecondsToTimestamp())
+        pointer = pointer.up(200.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
         verify(recognizer.onRelease!!).invoke()
@@ -189,7 +189,7 @@
     fun pointerInputHandler_upChangeConsumed() {
         var pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         val pointerEventChange = recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
         assertThat(pointerEventChange.first().consumed.downChange, `is`(true))
     }
@@ -198,9 +198,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsNegativeXUp_upChangeNotConsumed() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), -1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, -1f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         val result =
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
@@ -211,9 +211,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsPositiveXUp_upChangeNotConsumed() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 1f, 0f)
+        pointer = pointer.moveTo(50.milliseconds, 1f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         val result =
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
@@ -224,9 +224,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsNegativeYUp_upChangeNotConsumed() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 0f, -1f)
+        pointer = pointer.moveTo(50.milliseconds, 0f, -1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
         val result =
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
 
@@ -237,9 +237,9 @@
     fun pointerInputHandler_downMoveOutsideBoundsPositiveYUp_upChangeNotConsumed() {
         var pointer = down(x = 0f, y = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.moveTo(50L.millisecondsToTimestamp(), 0f, 1f)
+        pointer = pointer.moveTo(50.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
-        pointer = pointer.up(100L.millisecondsToTimestamp())
+        pointer = pointer.up(100.milliseconds)
 
         val result =
             recognizer.pointerInputHandler.invokeOverAllPasses(pointer, IntPxSize(1.ipx, 1.ipx))
@@ -270,7 +270,7 @@
     fun pointerInputHandler_upChangeConsumedDuringPostUp() {
         val pointer = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(listOf(pointer))
-        var pointerEventChange = listOf(pointer.up(100L.millisecondsToTimestamp()))
+        var pointerEventChange = listOf(pointer.up(100.milliseconds))
         pointerEventChange = recognizer.pointerInputHandler.invokeOverPasses(
             pointerEventChange,
             PointerEventPass.InitialDown,
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawDragGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawDragGestureDetectorTest.kt
index e188f90..2bcf220 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawDragGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawDragGestureDetectorTest.kt
@@ -24,7 +24,6 @@
 import androidx.ui.core.consumePositionChange
 import androidx.ui.core.ipx
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -308,9 +307,9 @@
     fun pointerInputHandler_blockedDownMoveUp_onStopNotCalled() {
         var change = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
-        change = change.moveTo(10L.millisecondsToTimestamp(), 1f, 1f)
+        change = change.moveTo(10.milliseconds, 1f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(log.filter { it.methodName == "onStop" }).hasSize(0)
@@ -321,7 +320,7 @@
         var change = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
         dragStartBlocked = false
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(log.filter { it.methodName == "onStop" }).hasSize(0)
@@ -336,8 +335,8 @@
         change1 = change1.moveBy(10.milliseconds, 1f, 1f)
         change2 = change2.moveBy(10.milliseconds, -1f, -1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         assertThat(log.filter { it.methodName == "onStop" }).isEmpty()
     }
@@ -349,9 +348,9 @@
         var change = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
         dragStartBlocked = false
-        change = change.moveTo(10L.millisecondsToTimestamp(), 1f, 1f)
+        change = change.moveTo(10.milliseconds, 1f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(log.filter { it.methodName == "onStop" }).hasSize(1)
@@ -393,7 +392,7 @@
             recognizer.pointerInputHandler.invokeOverAllPasses(change)
         }
 
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         val loggedStops = log.filter { it.methodName == "onStop" }
@@ -412,12 +411,12 @@
         dragStartBlocked = false
 
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             0f,
             1f
         )
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(log).hasSize(4)
@@ -443,7 +442,7 @@
         var change = down()
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             1f,
             0f
         )
@@ -476,7 +475,7 @@
         dragStartBlocked = false
 
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             1f,
             1f
         )
@@ -494,7 +493,7 @@
         dragStartBlocked = false
 
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             1f,
             1f
         )
@@ -510,7 +509,7 @@
         dragStartBlocked = false
 
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             3f,
             -5f
         )
@@ -539,12 +538,12 @@
         dragStartBlocked = false
 
         change = change.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             1f,
             0f
         )
         recognizer.pointerInputHandler.invokeOverAllPasses(change)
-        change = change.up(20L.millisecondsToTimestamp())
+        change = change.up(20.milliseconds)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(result.first().consumed.downChange).isTrue()
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawScaleGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawScaleGestureDetectorTest.kt
index b115bb0..8dc7821 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawScaleGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/RawScaleGestureDetectorTest.kt
@@ -20,7 +20,6 @@
 import androidx.ui.core.PxPosition
 import androidx.ui.core.anyPositionChangeConsumed
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -137,8 +136,8 @@
 
         // The pointers move and rotate, but the average distance to the center doesn't change, so
         // no scaling occurs.
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), 3f, 5f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), 5f, 3f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 3f, 5f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 5f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         assertThat(log.filter { it.methodName == "onStart" }).isEmpty()
@@ -182,9 +181,9 @@
 
         // The pointers move and rotate, but the average distance to the center doesn't change, so
         // no scaling occurs.
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), 2f, 5f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), 4f, 2f)
-        pointer3 = pointer3.moveTo(10L.millisecondsToTimestamp(), 5f, 3f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 2f, 5f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 4f, 2f)
+        pointer3 = pointer3.moveTo(10.milliseconds, 5f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2, pointer3)
 
         // Assert
@@ -230,10 +229,10 @@
 
         // The pointers move and rotate, but the average distance to the center doesn't change, so
         // no scaling occurs.
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), 1f, 2f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), 4f, 1f)
-        pointer3 = pointer3.moveTo(10L.millisecondsToTimestamp(), 4f, 3f)
-        pointer4 = pointer4.moveTo(10L.millisecondsToTimestamp(), 7f, 2f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 1f, 2f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 4f, 1f)
+        pointer3 = pointer3.moveTo(10.milliseconds, 4f, 3f)
+        pointer4 = pointer4.moveTo(10.milliseconds, 7f, 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2, pointer3, pointer4)
 
         // Assert
@@ -272,9 +271,9 @@
         scaleStartBlocked = false
 
         pointer1 =
-            pointer1.moveTo(10L.millisecondsToTimestamp(), 2f, 2f).consume(-1f, -2f)
+            pointer1.moveTo(10.milliseconds, 2f, 2f).consume(-1f, -2f)
         pointer2 =
-            pointer2.moveTo(10L.millisecondsToTimestamp(), 5f, 1f).consume(1f, -2f)
+            pointer2.moveTo(10.milliseconds, 5f, 1f).consume(1f, -2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         assertThat(log.filter { it.methodName == "onStart" }).isEmpty()
@@ -375,8 +374,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 0f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 3f, y = 0f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 0f, 0f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 3f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -391,8 +390,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 0f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 3f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 0f, 0f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 0f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -407,8 +406,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 0f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 1f, y = 0f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 0f, 0f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 1f, 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -423,8 +422,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 0f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 1f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 0f, 0f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 0f, 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -439,8 +438,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 0f, y = 0f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 4f, y = 4f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 0f, 0f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 4f, 4f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -455,8 +454,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
         scaleStartBlocked = false
 
-        pointer1 = pointer1.moveTo(10L.millisecondsToTimestamp(), x = 1f, y = 1f)
-        pointer2 = pointer2.moveTo(10L.millisecondsToTimestamp(), x = 2f, y = 2f)
+        pointer1 = pointer1.moveTo(10.milliseconds, 1f, 1f)
+        pointer2 = pointer2.moveTo(10.milliseconds, 2f, 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         val onScaleLog = log.filter { it.methodName == "onScale" }
@@ -477,7 +476,7 @@
         pointer2 = pointer2.moveBy(10.milliseconds, dx = 0f, dy = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
-        pointer1 = pointer1.up(20L.millisecondsToTimestamp())
+        pointer1 = pointer1.up(20.milliseconds)
         pointer2 = pointer2.moveBy(0.milliseconds, dx = 0f, dy = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
@@ -494,7 +493,7 @@
         pointer1 = pointer1.moveBy(10.milliseconds, dx = 1f, dy = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1)
 
-        pointer1 = pointer1.up(20L.millisecondsToTimestamp())
+        pointer1 = pointer1.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1)
 
         assertThat(log.filter { it.methodName == "onStop" }).hasSize(0)
@@ -514,7 +513,7 @@
         pointer3 = pointer3.moveBy(10.milliseconds, dx = 1f, dy = 1f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2, pointer3)
 
-        pointer1 = pointer1.up(20L.millisecondsToTimestamp())
+        pointer1 = pointer1.up(20.milliseconds)
         pointer2 = pointer2.moveBy(10.milliseconds, dx = 0f, dy = 0f)
         pointer3 = pointer3.moveBy(10.milliseconds, dx = 0f, dy = 0f)
         recognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2, pointer3)
@@ -530,11 +529,11 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(log.filter { it.methodName == "onStop" }).hasSize(1)
@@ -546,11 +545,11 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.moveTo(20L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.moveTo(20.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(log.filter { it.methodName == "onStop" }).isEmpty()
@@ -564,11 +563,11 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(log).hasSize(3)
@@ -601,8 +600,8 @@
         var change1 = down(0, x = 1f, y = 1f)
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { !it.anyPositionChangeConsumed() }).isEqualTo(2)
@@ -614,8 +613,8 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { !it.anyPositionChangeConsumed() }).isEqualTo(2)
@@ -629,8 +628,8 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { !it.anyPositionChangeConsumed() }).isEqualTo(2)
@@ -646,8 +645,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 6f, 0f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 6f, 0f)
         scaleObserver.resultingScaleChange = 2f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -677,8 +676,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 6f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 6f)
         scaleObserver.resultingScaleChange = 2f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -706,8 +705,8 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.first { it.id == 0 }.consumed.positionChange)
@@ -726,8 +725,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 2f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 6f, 0f)
+        change1 = change1.moveTo(10.milliseconds, 2f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 6f, 0f)
         scaleObserver.resultingScaleChange = .75f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -757,8 +756,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 2f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 6f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 2f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 6f)
         scaleObserver.resultingScaleChange = .75f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -786,8 +785,8 @@
         var change2 = down(1, x = 8f, y = 8f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 2f, 2f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 6f, 6f)
+        change1 = change1.moveTo(10.milliseconds, 2f, 2f)
+        change2 = change2.moveTo(10.milliseconds, 6f, 6f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result[0].consumed.positionChange).isEqualTo(PxPosition(2.px, 2.px))
@@ -804,8 +803,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 2f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 8f, 0f)
+        change1 = change1.moveTo(10.milliseconds, 2f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 8f, 0f)
         scaleObserver.resultingScaleChange = 2f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -835,8 +834,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 2f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 8f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 2f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 8f)
         scaleObserver.resultingScaleChange = 2f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -866,8 +865,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 4f, 0f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 4f, 0f)
         scaleObserver.resultingScaleChange = .75f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -897,8 +896,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 4f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 4f)
         scaleObserver.resultingScaleChange = .75f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -928,8 +927,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, -3f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, -3f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 3f)
         scaleObserver.resultingScaleChange = 2f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -959,8 +958,8 @@
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
 
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, -2f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 0f, 2f)
+        change1 = change1.moveTo(10.milliseconds, 0f, -2f)
+        change2 = change2.moveTo(10.milliseconds, 0f, 2f)
         scaleObserver.resultingScaleChange = .75f
         var result = recognizer.pointerInputHandler.invokeOverPasses(
             listOf(change1, change2),
@@ -987,11 +986,11 @@
         var change1 = down(0, x = 1f, y = 1f)
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { it.consumed.downChange }).isEqualTo(0)
@@ -1005,8 +1004,8 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { it.consumed.downChange }).isEqualTo(0)
@@ -1018,11 +1017,11 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.moveTo(20L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.moveTo(20.milliseconds, 3f, 3f)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.first { it.id == 0 }.consumed.downChange).isTrue()
@@ -1034,11 +1033,11 @@
         var change2 = down(1, x = 2f, y = 2f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
         scaleStartBlocked = false
-        change1 = change1.moveTo(10L.millisecondsToTimestamp(), 0f, 0f)
-        change2 = change2.moveTo(10L.millisecondsToTimestamp(), 3f, 3f)
+        change1 = change1.moveTo(10.milliseconds, 0f, 0f)
+        change2 = change2.moveTo(10.milliseconds, 3f, 3f)
         recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
-        change1 = change1.up(20L.millisecondsToTimestamp())
-        change2 = change2.up(20L.millisecondsToTimestamp())
+        change1 = change1.up(20.milliseconds)
+        change2 = change2.up(20.milliseconds)
         val result = recognizer.pointerInputHandler.invokeOverAllPasses(change1, change2)
 
         assertThat(result.count { it.consumed.downChange }).isEqualTo(2)
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleSlopExceededGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleSlopExceededGestureDetectorTest.kt
index d9d434a..2f9409f 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleSlopExceededGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleSlopExceededGestureDetectorTest.kt
@@ -18,7 +18,6 @@
 
 import androidx.ui.core.Duration
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.down
 import androidx.ui.testutils.invokeOverAllPasses
@@ -455,20 +454,20 @@
     @Test
     fun onPointerInputChanges_2PointersMoveAroundUnderSlop_onTouchSlopExceededNotCalled() {
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), 0f, 50f)
+        var pointer1 = down(0, 0.milliseconds, 0f, 0f)
+        var pointer2 = down(1, 0.milliseconds, 0f, 50f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         // Act
 
         // Translate, rotate and scale up.
         pointer1 = pointer1.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             70f,
             100f
         )
         pointer2 = pointer2.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             10f,
             100f
         )
@@ -476,12 +475,12 @@
 
         // Translate, rotate and scale down.
         pointer1 = pointer1.moveTo(
-            20L.millisecondsToTimestamp(),
+            20.milliseconds,
             -40f,
             35f
         )
         pointer2 = pointer2.moveTo(
-            20L.millisecondsToTimestamp(),
+            20.milliseconds,
             -40f,
             75f
         )
@@ -489,12 +488,12 @@
 
         // Translate, rotate and scale up.
         pointer1 = pointer1.moveTo(
-            30L.millisecondsToTimestamp(),
+            30.milliseconds,
             -20f,
             -20f
         )
         pointer2 = pointer2.moveTo(
-            30L.millisecondsToTimestamp(),
+            30.milliseconds,
             40f,
             -20f
         )
@@ -502,12 +501,12 @@
 
         // Translate, rotate and scale down.
         pointer1 = pointer1.moveTo(
-            40L.millisecondsToTimestamp(),
+            40.milliseconds,
             20f,
             -40f
         )
         pointer2 = pointer2.moveTo(
-            40L.millisecondsToTimestamp(),
+            40.milliseconds,
             20f,
             -80f
         )
@@ -519,20 +518,20 @@
     @Test
     fun onPointerInputChanges_2PointersMoveOverIntoAndOverSlop_onTouchSlopExceededCalledOnce() {
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), 0f, 20f)
+        var pointer1 = down(0, 0.milliseconds, 0f, 0f)
+        var pointer2 = down(1, 0.milliseconds, 0f, 20f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         // Act
 
         // Over
         pointer1 = pointer1.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             0f,
             0f
         )
         pointer2 = pointer2.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             0f,
             31f
         )
@@ -540,12 +539,12 @@
 
         // Under
         pointer1 = pointer1.moveTo(
-            20L.millisecondsToTimestamp(),
+            20.milliseconds,
             0f,
             0f
         )
         pointer2 = pointer2.moveTo(
-            20L.millisecondsToTimestamp(),
+            20.milliseconds,
             0f,
             29f
         )
@@ -553,12 +552,12 @@
 
         // Over
         pointer1 = pointer1.moveTo(
-            30L.millisecondsToTimestamp(),
+            30.milliseconds,
             0f,
             0f
         )
         pointer2 = pointer2.moveTo(
-            30L.millisecondsToTimestamp(),
+            30.milliseconds,
             0f,
             31f
         )
@@ -571,8 +570,8 @@
     fun onPointerInputChanges_2PointersStepToSlopThenOverX_onTouchSlopExceededCalledOnceOver() {
 
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), 1f, 0f)
+        var pointer1 = down(0, 0.milliseconds, 0f, 0f)
+        var pointer2 = down(1, 0.milliseconds, 1f, 0f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         // Act
@@ -615,8 +614,8 @@
     @Test
     fun onPointerInputChanges_2PointersStepToSlopThenOverY_onTouchSlopExceededCalledOnceOver() {
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), 0f, 0f)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), 0f, 1f)
+        var pointer1 = down(0, 0.milliseconds, 0f, 0f)
+        var pointer2 = down(1, 0.milliseconds, 0f, 1f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         // Act
@@ -668,18 +667,18 @@
         expectedCound: Int
     ) {
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), x1s, y1s)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), x2s, y2s)
+        var pointer1 = down(0, 0.milliseconds, x1s, y1s)
+        var pointer2 = down(1, 0L.milliseconds, x2s, y2s)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2)
 
         // Act
         pointer1 = pointer1.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             x1e,
             y1e
         )
         pointer2 = pointer2.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             x2e,
             y2e
         )
@@ -704,24 +703,24 @@
         expectedCound: Int
     ) {
         // Arrange
-        var pointer1 = down(0, 0L.millisecondsToTimestamp(), x1s, y1s)
-        var pointer2 = down(1, 0L.millisecondsToTimestamp(), x2s, y2s)
-        var pointer3 = down(2, 0L.millisecondsToTimestamp(), x3s, y3s)
+        var pointer1 = down(0, 0.milliseconds, x1s, y1s)
+        var pointer2 = down(1, 0.milliseconds, x2s, y2s)
+        var pointer3 = down(2, 0.milliseconds, x3s, y3s)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(pointer1, pointer2, pointer3)
 
         // Act
         pointer1 = pointer1.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             x1e,
             y1e
         )
         pointer2 = pointer2.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             x2e,
             y2e
         )
         pointer3 = pointer3.moveTo(
-            10L.millisecondsToTimestamp(),
+            10.milliseconds,
             x3e,
             y3e
         )
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleUtilsTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleUtilsTest.kt
index 4d23ed1..2658d4b 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleUtilsTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/ScaleUtilsTest.kt
@@ -16,7 +16,7 @@
 
 package androidx.ui.core.gesture
 
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.testutils.down
 import androidx.ui.testutils.moveTo
 import com.google.common.truth.Truth.assertThat
@@ -172,10 +172,10 @@
     ) {
         val scaleDifference =
             listOf(
-                down(0, 0L.millisecondsToTimestamp(), x1s, y1s)
-                    .moveTo(10L.millisecondsToTimestamp(), x1e, y1e),
-                down(1, 0L.millisecondsToTimestamp(), x2s, y2s)
-                    .moveTo(10L.millisecondsToTimestamp(), x2e, y2e)
+                down(0, 0.milliseconds, x1s, y1s)
+                    .moveTo(10.milliseconds, x1e, y1e),
+                down(1, 0.milliseconds, x2s, y2s)
+                    .moveTo(10.milliseconds, x2e, y2e)
             ).calculateAllDimensionInformation().calculateScaleDifference()
 
         assertThat(scaleDifference).isEqualTo(expected)
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/TouchSlopExceededGestureDetectorTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/TouchSlopExceededGestureDetectorTest.kt
index 29453bc..f28da04 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/TouchSlopExceededGestureDetectorTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/TouchSlopExceededGestureDetectorTest.kt
@@ -22,7 +22,6 @@
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.ipx
 import androidx.ui.core.milliseconds
-import androidx.ui.core.millisecondsToTimestamp
 import androidx.ui.core.px
 import androidx.ui.testutils.consume
 import androidx.ui.testutils.down
@@ -81,9 +80,9 @@
 
     @Test
     fun onPointerInputChanges_downUp_canDragNotCalled() {
-        val down = down(timestamp = 0L.millisecondsToTimestamp())
+        val down = down(duration = 0.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down())
-        val up = down.up(10L.millisecondsToTimestamp())
+        val up = down.up(10.milliseconds)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
 
         assertThat(canDragDirections).isEmpty()
@@ -154,7 +153,7 @@
 
         val down = down()
         mRecognizer.pointerInputHandler.invokeOverAllPasses(down)
-        var move = down.moveTo(10L.millisecondsToTimestamp(), 0f, justBeyondSlop)
+        var move = down.moveTo(10.milliseconds, 0f, justBeyondSlop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move)
         repeat(3) {
             move = move.moveBy(Duration(milliseconds = 10), 0f, 1f)
@@ -341,40 +340,40 @@
         // Go around the border of the touch slop area
 
         // To top left
-        change = change.moveTo(10L.millisecondsToTimestamp(), -slop, -slop)
+        change = change.moveTo(10.milliseconds, -slop, -slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
         // To bottom left
-        change = change.moveTo(20L.millisecondsToTimestamp(), -slop, slop)
+        change = change.moveTo(20.milliseconds, -slop, slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
         // To bottom right
-        change = change.moveTo(30L.millisecondsToTimestamp(), slop, slop)
+        change = change.moveTo(30.milliseconds, slop, slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
         // To top right
-        change = change.moveTo(40L.millisecondsToTimestamp(), slop, -slop)
+        change = change.moveTo(40.milliseconds, slop, -slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         // Jump from corner to opposite corner and back
 
         // To bottom left
-        change = change.moveTo(50L.millisecondsToTimestamp(), -slop, slop)
+        change = change.moveTo(50.milliseconds, -slop, slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
         // To top right
-        change = change.moveTo(60L.millisecondsToTimestamp(), slop, -slop)
+        change = change.moveTo(60.milliseconds, slop, -slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         // Move the other diagonal
 
         // To top left
-        change = change.moveTo(70L.millisecondsToTimestamp(), -slop, -slop)
+        change = change.moveTo(70.milliseconds, -slop, -slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         // Jump from corner to opposite corner and back
 
         // To bottom right
-        change = change.moveTo(80L.millisecondsToTimestamp(), slop, slop)
+        change = change.moveTo(80.milliseconds, slop, slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
         // To top left
-        change = change.moveTo(90L.millisecondsToTimestamp(), -slop, -slop)
+        change = change.moveTo(90.milliseconds, -slop, -slop)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(change)
 
         assertThat(onTouchSlopExceededCallCount).isEqualTo(0)
@@ -735,7 +734,7 @@
         val move = down().moveBy(10.milliseconds, TestTouchSlop.toFloat(), TestTouchSlop.toFloat())
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move)
 
-        val up = move.up(20L.millisecondsToTimestamp())
+        val up = move.up(20.milliseconds)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
 
         // Assert
@@ -770,7 +769,7 @@
         val move = down().moveBy(10.milliseconds, TestTouchSlop + 1f, TestTouchSlop + 1f)
         mRecognizer.pointerInputHandler.invokeOverAllPasses(move)
 
-        val up = move.up(20L.millisecondsToTimestamp())
+        val up = move.up(20.milliseconds)
         val result = mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
 
         // Assert
@@ -792,7 +791,7 @@
             val move = down().moveBy(10.milliseconds, TestTouchSlop + 1f, 0f)
             mRecognizer.pointerInputHandler.invokeOverAllPasses(move)
 
-            val up = move.up(20L.millisecondsToTimestamp())
+            val up = move.up(20.milliseconds)
             mRecognizer.pointerInputHandler.invokeOverAllPasses(up)
         }
 
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/GestureUtilsTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/GestureUtilsTest.kt
index 4830f62..6ee318a 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/GestureUtilsTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/GestureUtilsTest.kt
@@ -18,7 +18,7 @@
 
 import androidx.ui.core.IntPxSize
 import androidx.ui.core.ipx
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.testutils.down
 import androidx.ui.testutils.up
 import com.google.common.truth.Truth.assertThat
@@ -33,7 +33,7 @@
     fun anyPointersInBounds_1Up_returnsFalse() {
         assertThat(
             listOf(
-                down(x = 0f, y = 0f).up(100L.millisecondsToTimestamp())
+                down(x = 0f, y = 0f).up(100.milliseconds)
             )
                 .anyPointersInBounds(IntPxSize(1.ipx, 1.ipx))
         ).isFalse()
diff --git a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/VelocityTrackerTest.kt b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/VelocityTrackerTest.kt
index 3830bcd..96c6db6 100644
--- a/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/VelocityTrackerTest.kt
+++ b/ui/ui-framework/src/test/java/androidx/ui/core/gesture/util/VelocityTrackerTest.kt
@@ -19,8 +19,9 @@
 import androidx.ui.core.PointerInputData
 import androidx.ui.core.Px
 import androidx.ui.core.PxPosition
+import androidx.ui.core.Uptime
 import androidx.ui.core.Velocity
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.core.px
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
@@ -56,7 +57,7 @@
         var i = 0
         velocityEventData.forEach {
             if (it.down) {
-                tracker.addPosition(it.timestamp!!, it.position!!)
+                tracker.addPosition(it.uptime!!, it.position!!)
             } else {
                 checkVelocity(tracker.calculateVelocity(), expected[i].first, expected[i].second)
                 tracker.resetTracking()
@@ -70,7 +71,7 @@
         val tracker = VelocityTracker()
         interruptedVelocityEventData.forEach {
             if (it.down) {
-                tracker.addPosition(it.timestamp!!, it.position!!)
+                tracker.addPosition(it.uptime!!, it.position!!)
             } else {
                 checkVelocity(
                     tracker.calculateVelocity(),
@@ -91,7 +92,7 @@
     fun calculateVelocity_onePosition_returnsZero() {
         val tracker = VelocityTracker()
         tracker.addPosition(
-            velocityEventData[0].timestamp!!,
+            velocityEventData[0].uptime!!,
             velocityEventData[0].position!!
         )
         assertThat(tracker.calculateVelocity()).isEqualTo(Velocity.Zero)
@@ -101,7 +102,7 @@
     fun resetTracking_resetsTracking() {
         val tracker = VelocityTracker()
         tracker.addPosition(
-            velocityEventData[0].timestamp!!,
+            velocityEventData[0].uptime!!,
             velocityEventData[0].position!!
         )
 
@@ -124,1532 +125,1532 @@
 
 val velocityEventData: List<PointerInputData> = listOf(
     PointerInputData(
-        timestamp = 216690896L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690896.milliseconds,
         down = true,
         position = createPxPosition(270.px, 538.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216690906L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690906.milliseconds,
         down = true,
         position = createPxPosition(270.px, 538.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216690951L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690951.milliseconds,
         down = true,
         position = createPxPosition(270.px, 530.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216690959L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690959.milliseconds,
         down = true,
         position = createPxPosition(270.px, 526.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216690967L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690967.milliseconds,
         down = true,
         position = createPxPosition(270.px, 521.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216690975L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690975.milliseconds,
         down = true,
         position = createPxPosition(270.px, 515.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216690983L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690983.milliseconds,
         down = true,
         position = createPxPosition(270.px, 506.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216690991L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690991.milliseconds,
         down = true,
         position = createPxPosition(268.8571472167969.px, 496.px)
     ),
     PointerInputData(
-        timestamp = 216690998L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216690998.milliseconds,
         down = true,
         position = createPxPosition(267.4285583496094.px, 483.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691006L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691006.milliseconds,
         down = true,
         position = createPxPosition(266.28570556640625.px, 469.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691014L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691014.milliseconds,
         down = true,
         position = createPxPosition(265.4285583496094.px, 456.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691021L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691021.milliseconds,
         down = true,
         position = createPxPosition(264.28570556640625.px, 443.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691029L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691029.milliseconds,
         down = true,
         position = createPxPosition(264.px, 431.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691036L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691036.milliseconds,
         down = true,
         position = createPxPosition(263.4285583496094.px, 421.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691044L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691044.milliseconds,
         down = true,
         position = createPxPosition(263.4285583496094.px, 412.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691052L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691052.milliseconds,
         down = true,
         position = createPxPosition(263.4285583496094.px, 404.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691060L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691060.milliseconds,
         down = true,
         position = createPxPosition(263.4285583496094.px, 396.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691068L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691068.milliseconds,
         down = true,
         position = createPxPosition(264.5714416503906.px, 390.px)
     ),
     PointerInputData(
-        timestamp = 216691075L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691075.milliseconds,
         down = true,
         position = createPxPosition(265.1428527832031.px, 384.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691083L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691083.milliseconds,
         down = true,
         position = createPxPosition(266.px, 380.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691091L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691091.milliseconds,
         down = true,
         position = createPxPosition(266.5714416503906.px, 376.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691098L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691098.milliseconds,
         down = true,
         position = createPxPosition(267.1428527832031.px, 373.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691106L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691106.milliseconds,
         down = true,
         position = createPxPosition(267.71429443359375.px, 370.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691114L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691114.milliseconds,
         down = true,
         position = createPxPosition(268.28570556640625.px, 367.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691121L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691121.milliseconds,
         down = true,
         position = createPxPosition(268.5714416503906.px, 366.px)
     ),
     PointerInputData(
-        timestamp = 216691130L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691130.milliseconds,
         down = true,
         position = createPxPosition(268.8571472167969.px, 364.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691137L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691137.milliseconds,
         down = true,
         position = createPxPosition(269.1428527832031.px, 363.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691145L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691145.milliseconds,
         down = true,
         position = createPxPosition(269.1428527832031.px, 362.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691153L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691153.milliseconds,
         down = true,
         position = createPxPosition(269.4285583496094.px, 362.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691168L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691168.milliseconds,
         down = true,
         position = createPxPosition(268.5714416503906.px, 365.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691176L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691176.milliseconds,
         down = true,
         position = createPxPosition(267.1428527832031.px, 370.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691183L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691183.milliseconds,
         down = true,
         position = createPxPosition(265.4285583496094.px, 376.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691191L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691191.milliseconds,
         down = true,
         position = createPxPosition(263.1428527832031.px, 385.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691199L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691199.milliseconds,
         down = true,
         position = createPxPosition(261.4285583496094.px, 396.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691207L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691207.milliseconds,
         down = true,
         position = createPxPosition(259.71429443359375.px, 408.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691215L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691215.milliseconds,
         down = true,
         position = createPxPosition(258.28570556640625.px, 419.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691222L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691222.milliseconds,
         down = true,
         position = createPxPosition(257.4285583496094.px, 428.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691230L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691230.milliseconds,
         down = true,
         position = createPxPosition(256.28570556640625.px, 436.px)
     ),
     PointerInputData(
-        timestamp = 216691238L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691238.milliseconds,
         down = true,
         position = createPxPosition(255.7142791748047.px, 442.px)
     ),
     PointerInputData(
-        timestamp = 216691245L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691245.milliseconds,
         down = true,
         position = createPxPosition(255.14285278320312.px, 447.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691253L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691253.milliseconds,
         down = true,
         position = createPxPosition(254.85714721679688.px, 453.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691261L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691261.milliseconds,
         down = true,
         position = createPxPosition(254.57142639160156.px, 458.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691268L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691268.milliseconds,
         down = true,
         position = createPxPosition(254.2857208251953.px, 463.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691276L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691276.milliseconds,
         down = true,
         position = createPxPosition(254.2857208251953.px, 470.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691284L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691284.milliseconds,
         down = true,
         position = createPxPosition(254.2857208251953.px, 477.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691292L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691292.milliseconds,
         down = true,
         position = createPxPosition(255.7142791748047.px, 487.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691300L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691300.milliseconds,
         down = true,
         position = createPxPosition(256.8571472167969.px, 498.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691307L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691307.milliseconds,
         down = true,
         position = createPxPosition(258.28570556640625.px, 507.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691315L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691315.milliseconds,
         down = true,
         position = createPxPosition(259.4285583496094.px, 516.px)
     ),
     PointerInputData(
-        timestamp = 216691323L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691323.milliseconds,
         down = true,
         position = createPxPosition(260.28570556640625.px, 521.7142944335938.px)
     ),
     PointerInputData(
-        timestamp = 216691338L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691338.milliseconds,
         down = false,
         position = createPxPosition(260.28570556640625.px, 521.7142944335938.px)
     ),
     PointerInputData(
-        timestamp = 216691573L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691573.milliseconds,
         down = true,
         position = createPxPosition(266.px, 327.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691588L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691588.milliseconds,
         down = true,
         position = createPxPosition(266.px, 327.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691626L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691626.milliseconds,
         down = true,
         position = createPxPosition(261.1428527832031.px, 337.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691634L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691634.milliseconds,
         down = true,
         position = createPxPosition(258.28570556640625.px, 343.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691642L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691642.milliseconds,
         down = true,
         position = createPxPosition(254.57142639160156.px, 354.px)
     ),
     PointerInputData(
-        timestamp = 216691650L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691650.milliseconds,
         down = true,
         position = createPxPosition(250.2857208251953.px, 368.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691657L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691657.milliseconds,
         down = true,
         position = createPxPosition(247.42857360839844.px, 382.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216691665L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691665.milliseconds,
         down = true,
         position = createPxPosition(245.14285278320312.px, 397.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691673L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691673.milliseconds,
         down = true,
         position = createPxPosition(243.14285278320312.px, 411.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691680L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691680.milliseconds,
         down = true,
         position = createPxPosition(242.2857208251953.px, 426.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216691688L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691688.milliseconds,
         down = true,
         position = createPxPosition(241.7142791748047.px, 440.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691696L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691696.milliseconds,
         down = true,
         position = createPxPosition(241.7142791748047.px, 454.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216691703L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691703.milliseconds,
         down = true,
         position = createPxPosition(242.57142639160156.px, 467.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691712L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691712.milliseconds,
         down = true,
         position = createPxPosition(243.42857360839844.px, 477.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216691720L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691720.milliseconds,
         down = true,
         position = createPxPosition(244.85714721679688.px, 485.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691727L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691727.milliseconds,
         down = true,
         position = createPxPosition(246.2857208251953.px, 493.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216691735L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691735.milliseconds,
         down = true,
         position = createPxPosition(248.px, 499.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216691750L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216691750.milliseconds,
         down = false,
         position = createPxPosition(248.px, 499.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692255L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692255.milliseconds,
         down = true,
         position = createPxPosition(249.42857360839844.px, 351.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216692270L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692270.milliseconds,
         down = true,
         position = createPxPosition(249.42857360839844.px, 351.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216692309L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692309.milliseconds,
         down = true,
         position = createPxPosition(246.2857208251953.px, 361.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692317L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692317.milliseconds,
         down = true,
         position = createPxPosition(244.px, 368.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216692325L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692325.milliseconds,
         down = true,
         position = createPxPosition(241.42857360839844.px, 377.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692333L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692333.milliseconds,
         down = true,
         position = createPxPosition(237.7142791748047.px, 391.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692340L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692340.milliseconds,
         down = true,
         position = createPxPosition(235.14285278320312.px, 406.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216692348L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692348.milliseconds,
         down = true,
         position = createPxPosition(232.57142639160156.px, 421.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216692356L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692356.milliseconds,
         down = true,
         position = createPxPosition(230.2857208251953.px, 436.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216692363L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692363.milliseconds,
         down = true,
         position = createPxPosition(228.2857208251953.px, 451.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692371L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692371.milliseconds,
         down = true,
         position = createPxPosition(227.42857360839844.px, 466.px)
     ),
     PointerInputData(
-        timestamp = 216692378L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692378.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 479.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692387L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692387.milliseconds,
         down = true,
         position = createPxPosition(225.7142791748047.px, 491.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692395L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692395.milliseconds,
         down = true,
         position = createPxPosition(225.14285278320312.px, 501.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216692402L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692402.milliseconds,
         down = true,
         position = createPxPosition(224.85714721679688.px, 509.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216692410L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692410.milliseconds,
         down = true,
         position = createPxPosition(224.57142639160156.px, 514.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216692418L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692418.milliseconds,
         down = true,
         position = createPxPosition(224.2857208251953.px, 519.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216692425L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692425.milliseconds,
         down = true,
         position = createPxPosition(224.px, 523.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216692433L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692433.milliseconds,
         down = true,
         position = createPxPosition(224.px, 527.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216692441L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692441.milliseconds,
         down = true,
         position = createPxPosition(224.px, 530.5714111328125.px)
     ),
     PointerInputData(
-        timestamp = 216692448L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692448.milliseconds,
         down = true,
         position = createPxPosition(224.px, 533.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216692456L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692456.milliseconds,
         down = true,
         position = createPxPosition(224.px, 535.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216692464L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692464.milliseconds,
         down = true,
         position = createPxPosition(223.7142791748047.px, 536.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216692472L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692472.milliseconds,
         down = true,
         position = createPxPosition(223.7142791748047.px, 538.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216692487L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692487.milliseconds,
         down = false,
         position = createPxPosition(223.7142791748047.px, 538.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216692678L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692678.milliseconds,
         down = true,
         position = createPxPosition(221.42857360839844.px, 526.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216692701L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692701.milliseconds,
         down = true,
         position = createPxPosition(220.57142639160156.px, 514.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216692708L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692708.milliseconds,
         down = true,
         position = createPxPosition(220.2857208251953.px, 508.px)
     ),
     PointerInputData(
-        timestamp = 216692716L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692716.milliseconds,
         down = true,
         position = createPxPosition(220.2857208251953.px, 498.px)
     ),
     PointerInputData(
-        timestamp = 216692724L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692724.milliseconds,
         down = true,
         position = createPxPosition(221.14285278320312.px, 484.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216692732L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692732.milliseconds,
         down = true,
         position = createPxPosition(221.7142791748047.px, 469.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216692740L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692740.milliseconds,
         down = true,
         position = createPxPosition(223.42857360839844.px, 453.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216692748L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692748.milliseconds,
         down = true,
         position = createPxPosition(225.7142791748047.px, 436.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216692755L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692755.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 418.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216692763L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692763.milliseconds,
         down = true,
         position = createPxPosition(232.85714721679688.px, 400.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216692770L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692770.milliseconds,
         down = true,
         position = createPxPosition(236.85714721679688.px, 382.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216692778L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692778.milliseconds,
         down = true,
         position = createPxPosition(241.14285278320312.px, 366.px)
     ),
     PointerInputData(
-        timestamp = 216692786L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692786.milliseconds,
         down = true,
         position = createPxPosition(244.85714721679688.px, 350.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216692793L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692793.milliseconds,
         down = true,
         position = createPxPosition(249.14285278320312.px, 335.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216692809L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216692809.milliseconds,
         down = false,
         position = createPxPosition(249.14285278320312.px, 335.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216693222L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693222.milliseconds,
         down = true,
         position = createPxPosition(224.px, 545.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216693245L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693245.milliseconds,
         down = true,
         position = createPxPosition(224.px, 545.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216693275L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693275.milliseconds,
         down = true,
         position = createPxPosition(222.85714721679688.px, 535.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216693284L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693284.milliseconds,
         down = true,
         position = createPxPosition(222.85714721679688.px, 528.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216693291L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693291.milliseconds,
         down = true,
         position = createPxPosition(222.2857208251953.px, 518.5714111328125.px)
     ),
     PointerInputData(
-        timestamp = 216693299L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693299.milliseconds,
         down = true,
         position = createPxPosition(222.px, 503.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216693307L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693307.milliseconds,
         down = true,
         position = createPxPosition(222.px, 485.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216693314L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693314.milliseconds,
         down = true,
         position = createPxPosition(221.7142791748047.px, 464.px)
     ),
     PointerInputData(
-        timestamp = 216693322L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693322.milliseconds,
         down = true,
         position = createPxPosition(222.2857208251953.px, 440.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216693337L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693337.milliseconds,
         down = false,
         position = createPxPosition(222.2857208251953.px, 440.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216693985L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216693985.milliseconds,
         down = true,
         position = createPxPosition(208.px, 544.px)
     ),
     PointerInputData(
-        timestamp = 216694047L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694047.milliseconds,
         down = true,
         position = createPxPosition(208.57142639160156.px, 532.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216694054L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694054.milliseconds,
         down = true,
         position = createPxPosition(208.85714721679688.px, 525.7142944335938.px)
     ),
     PointerInputData(
-        timestamp = 216694062L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694062.milliseconds,
         down = true,
         position = createPxPosition(208.85714721679688.px, 515.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216694070L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694070.milliseconds,
         down = true,
         position = createPxPosition(208.px, 501.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694077L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694077.milliseconds,
         down = true,
         position = createPxPosition(207.42857360839844.px, 487.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694085L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694085.milliseconds,
         down = true,
         position = createPxPosition(206.57142639160156.px, 472.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694092L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694092.milliseconds,
         down = true,
         position = createPxPosition(206.57142639160156.px, 458.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694100L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694100.milliseconds,
         down = true,
         position = createPxPosition(206.57142639160156.px, 446.px)
     ),
     PointerInputData(
-        timestamp = 216694108L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694108.milliseconds,
         down = true,
         position = createPxPosition(206.57142639160156.px, 434.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694116L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694116.milliseconds,
         down = true,
         position = createPxPosition(207.14285278320312.px, 423.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694124L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694124.milliseconds,
         down = true,
         position = createPxPosition(208.57142639160156.px, 412.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694131L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694131.milliseconds,
         down = true,
         position = createPxPosition(209.7142791748047.px, 402.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694139L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694139.milliseconds,
         down = true,
         position = createPxPosition(211.7142791748047.px, 393.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694147L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694147.milliseconds,
         down = true,
         position = createPxPosition(213.42857360839844.px, 385.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694154L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694154.milliseconds,
         down = true,
         position = createPxPosition(215.42857360839844.px, 378.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694162L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694162.milliseconds,
         down = true,
         position = createPxPosition(217.42857360839844.px, 371.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694169L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694169.milliseconds,
         down = true,
         position = createPxPosition(219.42857360839844.px, 366.px)
     ),
     PointerInputData(
-        timestamp = 216694177L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694177.milliseconds,
         down = true,
         position = createPxPosition(221.42857360839844.px, 360.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694185L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694185.milliseconds,
         down = true,
         position = createPxPosition(223.42857360839844.px, 356.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694193L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694193.milliseconds,
         down = true,
         position = createPxPosition(225.14285278320312.px, 352.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694201L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694201.milliseconds,
         down = true,
         position = createPxPosition(226.85714721679688.px, 348.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694209L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694209.milliseconds,
         down = true,
         position = createPxPosition(228.2857208251953.px, 346.px)
     ),
     PointerInputData(
-        timestamp = 216694216L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694216.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 343.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694224L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694224.milliseconds,
         down = true,
         position = createPxPosition(230.px, 342.px)
     ),
     PointerInputData(
-        timestamp = 216694232L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694232.milliseconds,
         down = true,
         position = createPxPosition(230.57142639160156.px, 340.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694239L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694239.milliseconds,
         down = true,
         position = createPxPosition(230.85714721679688.px, 339.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694247L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694247.milliseconds,
         down = true,
         position = createPxPosition(230.85714721679688.px, 339.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694262L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694262.milliseconds,
         down = true,
         position = createPxPosition(230.2857208251953.px, 342.px)
     ),
     PointerInputData(
-        timestamp = 216694270L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694270.milliseconds,
         down = true,
         position = createPxPosition(228.85714721679688.px, 346.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694278L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694278.milliseconds,
         down = true,
         position = createPxPosition(227.14285278320312.px, 352.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694286L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694286.milliseconds,
         down = true,
         position = createPxPosition(225.42857360839844.px, 359.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694294L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694294.milliseconds,
         down = true,
         position = createPxPosition(223.7142791748047.px, 367.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694301L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694301.milliseconds,
         down = true,
         position = createPxPosition(222.57142639160156.px, 376.px)
     ),
     PointerInputData(
-        timestamp = 216694309L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694309.milliseconds,
         down = true,
         position = createPxPosition(221.42857360839844.px, 384.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694317L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694317.milliseconds,
         down = true,
         position = createPxPosition(220.85714721679688.px, 392.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694324L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694324.milliseconds,
         down = true,
         position = createPxPosition(220.px, 400.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694332L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694332.milliseconds,
         down = true,
         position = createPxPosition(219.14285278320312.px, 409.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694339L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694339.milliseconds,
         down = true,
         position = createPxPosition(218.85714721679688.px, 419.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694348L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694348.milliseconds,
         down = true,
         position = createPxPosition(218.2857208251953.px, 428.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694356L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694356.milliseconds,
         down = true,
         position = createPxPosition(218.2857208251953.px, 438.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694363L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694363.milliseconds,
         down = true,
         position = createPxPosition(218.2857208251953.px, 447.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694371L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694371.milliseconds,
         down = true,
         position = createPxPosition(218.2857208251953.px, 455.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694379L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694379.milliseconds,
         down = true,
         position = createPxPosition(219.14285278320312.px, 462.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694386L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694386.milliseconds,
         down = true,
         position = createPxPosition(220.px, 469.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694394L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694394.milliseconds,
         down = true,
         position = createPxPosition(221.14285278320312.px, 475.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694401L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694401.milliseconds,
         down = true,
         position = createPxPosition(222.px, 480.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694409L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694409.milliseconds,
         down = true,
         position = createPxPosition(222.85714721679688.px, 485.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694417L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694417.milliseconds,
         down = true,
         position = createPxPosition(224.px, 489.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694425L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694425.milliseconds,
         down = true,
         position = createPxPosition(224.85714721679688.px, 492.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694433L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694433.milliseconds,
         down = true,
         position = createPxPosition(225.42857360839844.px, 495.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694440L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694440.milliseconds,
         down = true,
         position = createPxPosition(226.px, 497.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694448L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694448.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 498.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694456L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694456.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 498.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694471L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694471.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 498.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694479L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694479.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 496.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694486L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694486.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 493.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694494L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694494.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 490.px)
     ),
     PointerInputData(
-        timestamp = 216694502L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694502.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 486.px)
     ),
     PointerInputData(
-        timestamp = 216694510L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694510.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 480.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694518L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694518.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 475.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694525L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694525.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 468.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694533L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694533.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 461.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694541L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694541.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 452.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694548L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694548.milliseconds,
         down = true,
         position = createPxPosition(226.57142639160156.px, 442.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694556L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694556.milliseconds,
         down = true,
         position = createPxPosition(226.57142639160156.px, 432.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694564L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694564.milliseconds,
         down = true,
         position = createPxPosition(226.85714721679688.px, 423.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694571L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694571.milliseconds,
         down = true,
         position = createPxPosition(227.42857360839844.px, 416.px)
     ),
     PointerInputData(
-        timestamp = 216694580L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694580.milliseconds,
         down = true,
         position = createPxPosition(227.7142791748047.px, 410.px)
     ),
     PointerInputData(
-        timestamp = 216694587L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694587.milliseconds,
         down = true,
         position = createPxPosition(228.2857208251953.px, 404.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694595L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694595.milliseconds,
         down = true,
         position = createPxPosition(228.85714721679688.px, 399.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694603L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694603.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 395.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694610L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694610.milliseconds,
         down = true,
         position = createPxPosition(229.42857360839844.px, 392.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694618L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694618.milliseconds,
         down = true,
         position = createPxPosition(229.7142791748047.px, 390.px)
     ),
     PointerInputData(
-        timestamp = 216694625L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694625.milliseconds,
         down = true,
         position = createPxPosition(229.7142791748047.px, 388.px)
     ),
     PointerInputData(
-        timestamp = 216694633L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694633.milliseconds,
         down = true,
         position = createPxPosition(229.7142791748047.px, 386.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694641L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694641.milliseconds,
         down = true,
         position = createPxPosition(229.7142791748047.px, 386.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694648L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694648.milliseconds,
         down = true,
         position = createPxPosition(229.7142791748047.px, 386.px)
     ),
     PointerInputData(
-        timestamp = 216694657L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694657.milliseconds,
         down = true,
         position = createPxPosition(228.85714721679688.px, 386.px)
     ),
     PointerInputData(
-        timestamp = 216694665L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694665.milliseconds,
         down = true,
         position = createPxPosition(228.px, 388.px)
     ),
     PointerInputData(
-        timestamp = 216694672L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694672.milliseconds,
         down = true,
         position = createPxPosition(226.px, 392.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216694680L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694680.milliseconds,
         down = true,
         position = createPxPosition(224.px, 397.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216694688L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694688.milliseconds,
         down = true,
         position = createPxPosition(222.px, 404.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694695L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694695.milliseconds,
         down = true,
         position = createPxPosition(219.7142791748047.px, 411.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216694703L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694703.milliseconds,
         down = true,
         position = createPxPosition(218.2857208251953.px, 418.px)
     ),
     PointerInputData(
-        timestamp = 216694710L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694710.milliseconds,
         down = true,
         position = createPxPosition(217.14285278320312.px, 425.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694718L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694718.milliseconds,
         down = true,
         position = createPxPosition(215.7142791748047.px, 433.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694726L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694726.milliseconds,
         down = true,
         position = createPxPosition(214.85714721679688.px, 442.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216694734L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694734.milliseconds,
         down = true,
         position = createPxPosition(214.px, 454.px)
     ),
     PointerInputData(
-        timestamp = 216694742L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694742.milliseconds,
         down = true,
         position = createPxPosition(214.px, 469.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694749L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694749.milliseconds,
         down = true,
         position = createPxPosition(215.42857360839844.px, 485.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216694757L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694757.milliseconds,
         down = true,
         position = createPxPosition(217.7142791748047.px, 502.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216694765L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694765.milliseconds,
         down = true,
         position = createPxPosition(221.14285278320312.px, 521.4285888671875.px)
     ),
     PointerInputData(
-        timestamp = 216694772L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694772.milliseconds,
         down = true,
         position = createPxPosition(224.57142639160156.px, 541.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216694780L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694780.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 561.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216694788L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694788.milliseconds,
         down = true,
         position = createPxPosition(233.42857360839844.px, 578.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216694802L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216694802.milliseconds,
         down = false,
         position = createPxPosition(233.42857360839844.px, 578.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216695344L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695344.milliseconds,
         down = true,
         position = createPxPosition(253.42857360839844.px, 310.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695352L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695352.milliseconds,
         down = true,
         position = createPxPosition(253.42857360839844.px, 310.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695359L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695359.milliseconds,
         down = true,
         position = createPxPosition(252.85714721679688.px, 318.px)
     ),
     PointerInputData(
-        timestamp = 216695367L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695367.milliseconds,
         down = true,
         position = createPxPosition(251.14285278320312.px, 322.px)
     ),
     PointerInputData(
-        timestamp = 216695375L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695375.milliseconds,
         down = true,
         position = createPxPosition(248.85714721679688.px, 327.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216695382L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695382.milliseconds,
         down = true,
         position = createPxPosition(246.px, 334.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216695390L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695390.milliseconds,
         down = true,
         position = createPxPosition(242.57142639160156.px, 344.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695397L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695397.milliseconds,
         down = true,
         position = createPxPosition(238.85714721679688.px, 357.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216695406L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695406.milliseconds,
         down = true,
         position = createPxPosition(235.7142791748047.px, 371.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216695414L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695414.milliseconds,
         down = true,
         position = createPxPosition(232.2857208251953.px, 386.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216695421L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695421.milliseconds,
         down = true,
         position = createPxPosition(229.42857360839844.px, 402.px)
     ),
     PointerInputData(
-        timestamp = 216695429L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695429.milliseconds,
         down = true,
         position = createPxPosition(227.42857360839844.px, 416.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216695437L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695437.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 431.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216695444L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695444.milliseconds,
         down = true,
         position = createPxPosition(226.2857208251953.px, 446.px)
     ),
     PointerInputData(
-        timestamp = 216695452L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695452.milliseconds,
         down = true,
         position = createPxPosition(227.7142791748047.px, 460.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216695459L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695459.milliseconds,
         down = true,
         position = createPxPosition(230.px, 475.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216695467L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695467.milliseconds,
         down = true,
         position = createPxPosition(232.2857208251953.px, 489.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216695475L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695475.milliseconds,
         down = true,
         position = createPxPosition(235.7142791748047.px, 504.px)
     ),
     PointerInputData(
-        timestamp = 216695490L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695490.milliseconds,
         down = false,
         position = createPxPosition(235.7142791748047.px, 504.px)
     ),
     PointerInputData(
-        timestamp = 216695885L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695885.milliseconds,
         down = true,
         position = createPxPosition(238.85714721679688.px, 524.px)
     ),
     PointerInputData(
-        timestamp = 216695908L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695908.milliseconds,
         down = true,
         position = createPxPosition(236.2857208251953.px, 515.7142944335938.px)
     ),
     PointerInputData(
-        timestamp = 216695916L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695916.milliseconds,
         down = true,
         position = createPxPosition(234.85714721679688.px, 509.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216695924L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695924.milliseconds,
         down = true,
         position = createPxPosition(232.57142639160156.px, 498.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695931L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695931.milliseconds,
         down = true,
         position = createPxPosition(230.57142639160156.px, 483.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216695939L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695939.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 466.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695947L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695947.milliseconds,
         down = true,
         position = createPxPosition(229.14285278320312.px, 446.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216695955L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695955.milliseconds,
         down = true,
         position = createPxPosition(230.57142639160156.px, 424.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216695963L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695963.milliseconds,
         down = true,
         position = createPxPosition(232.57142639160156.px, 402.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216695970L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695970.milliseconds,
         down = true,
         position = createPxPosition(235.14285278320312.px, 380.px)
     ),
     PointerInputData(
-        timestamp = 216695978L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695978.milliseconds,
         down = true,
         position = createPxPosition(238.57142639160156.px, 359.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216695993L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216695993.milliseconds,
         down = false,
         position = createPxPosition(238.57142639160156.px, 359.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216696429L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696429.milliseconds,
         down = true,
         position = createPxPosition(238.2857208251953.px, 568.5714111328125.px)
     ),
     PointerInputData(
-        timestamp = 216696459L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696459.milliseconds,
         down = true,
         position = createPxPosition(234.px, 560.px)
     ),
     PointerInputData(
-        timestamp = 216696467L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696467.milliseconds,
         down = true,
         position = createPxPosition(231.42857360839844.px, 553.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216696475L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696475.milliseconds,
         down = true,
         position = createPxPosition(228.2857208251953.px, 543.1428833007812.px)
     ),
     PointerInputData(
-        timestamp = 216696483L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696483.milliseconds,
         down = true,
         position = createPxPosition(225.42857360839844.px, 528.8571166992188.px)
     ),
     PointerInputData(
-        timestamp = 216696491L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696491.milliseconds,
         down = true,
         position = createPxPosition(223.14285278320312.px, 512.2857055664062.px)
     ),
     PointerInputData(
-        timestamp = 216696498L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696498.milliseconds,
         down = true,
         position = createPxPosition(222.px, 495.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216696506L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696506.milliseconds,
         down = true,
         position = createPxPosition(221.7142791748047.px, 477.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216696514L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696514.milliseconds,
         down = true,
         position = createPxPosition(221.7142791748047.px, 458.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216696521L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696521.milliseconds,
         down = true,
         position = createPxPosition(223.14285278320312.px, 438.px)
     ),
     PointerInputData(
-        timestamp = 216696529L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696529.milliseconds,
         down = true,
         position = createPxPosition(224.2857208251953.px, 416.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216696544L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696544.milliseconds,
         down = false,
         position = createPxPosition(224.2857208251953.px, 416.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216696974L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216696974.milliseconds,
         down = true,
         position = createPxPosition(218.57142639160156.px, 530.5714111328125.px)
     ),
     PointerInputData(
-        timestamp = 216697012L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697012.milliseconds,
         down = true,
         position = createPxPosition(220.2857208251953.px, 522.px)
     ),
     PointerInputData(
-        timestamp = 216697020L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697020.milliseconds,
         down = true,
         position = createPxPosition(221.14285278320312.px, 517.7142944335938.px)
     ),
     PointerInputData(
-        timestamp = 216697028L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697028.milliseconds,
         down = true,
         position = createPxPosition(222.2857208251953.px, 511.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216697036L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697036.milliseconds,
         down = true,
         position = createPxPosition(224.px, 504.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216697044L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697044.milliseconds,
         down = true,
         position = createPxPosition(227.14285278320312.px, 490.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216697052L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697052.milliseconds,
         down = true,
         position = createPxPosition(229.42857360839844.px, 474.px)
     ),
     PointerInputData(
-        timestamp = 216697059L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697059.milliseconds,
         down = true,
         position = createPxPosition(231.42857360839844.px, 454.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216697067L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697067.milliseconds,
         down = true,
         position = createPxPosition(233.7142791748047.px, 431.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697082L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697082.milliseconds,
         down = false,
         position = createPxPosition(233.7142791748047.px, 431.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697435L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697435.milliseconds,
         down = true,
         position = createPxPosition(257.1428527832031.px, 285.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697465L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697465.milliseconds,
         down = true,
         position = createPxPosition(251.7142791748047.px, 296.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216697473L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697473.milliseconds,
         down = true,
         position = createPxPosition(248.2857208251953.px, 304.px)
     ),
     PointerInputData(
-        timestamp = 216697481L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697481.milliseconds,
         down = true,
         position = createPxPosition(244.57142639160156.px, 314.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216697489L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697489.milliseconds,
         down = true,
         position = createPxPosition(240.2857208251953.px, 329.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697497L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697497.milliseconds,
         down = true,
         position = createPxPosition(236.85714721679688.px, 345.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697505L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697505.milliseconds,
         down = true,
         position = createPxPosition(233.7142791748047.px, 361.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216697512L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697512.milliseconds,
         down = true,
         position = createPxPosition(231.14285278320312.px, 378.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216697520L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697520.milliseconds,
         down = true,
         position = createPxPosition(229.42857360839844.px, 395.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216697528L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697528.milliseconds,
         down = true,
         position = createPxPosition(229.42857360839844.px, 412.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216697535L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697535.milliseconds,
         down = true,
         position = createPxPosition(230.85714721679688.px, 430.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216697543L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697543.milliseconds,
         down = true,
         position = createPxPosition(233.42857360839844.px, 449.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216697558L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697558.milliseconds,
         down = false,
         position = createPxPosition(233.42857360839844.px, 449.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216697749L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697749.milliseconds,
         down = true,
         position = createPxPosition(246.px, 311.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216697780L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697780.milliseconds,
         down = true,
         position = createPxPosition(244.57142639160156.px, 318.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216697787L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697787.milliseconds,
         down = true,
         position = createPxPosition(243.14285278320312.px, 325.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216697795L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697795.milliseconds,
         down = true,
         position = createPxPosition(241.42857360839844.px, 336.px)
     ),
     PointerInputData(
-        timestamp = 216697803L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697803.milliseconds,
         down = true,
         position = createPxPosition(239.7142791748047.px, 351.1428527832031.px)
     ),
     PointerInputData(
-        timestamp = 216697811L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697811.milliseconds,
         down = true,
         position = createPxPosition(238.2857208251953.px, 368.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216697819L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697819.milliseconds,
         down = true,
         position = createPxPosition(238.px, 389.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216697826L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697826.milliseconds,
         down = true,
         position = createPxPosition(239.14285278320312.px, 412.px)
     ),
     PointerInputData(
-        timestamp = 216697834L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697834.milliseconds,
         down = true,
         position = createPxPosition(242.2857208251953.px, 438.px)
     ),
     PointerInputData(
-        timestamp = 216697842L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697842.milliseconds,
         down = true,
         position = createPxPosition(247.42857360839844.px, 466.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216697849L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697849.milliseconds,
         down = true,
         position = createPxPosition(254.2857208251953.px, 497.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216697864L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216697864.milliseconds,
         down = false,
         position = createPxPosition(254.2857208251953.px, 497.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216698321L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698321.milliseconds,
         down = true,
         position = createPxPosition(250.px, 306.px)
     ),
     PointerInputData(
-        timestamp = 216698328L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698328.milliseconds,
         down = true,
         position = createPxPosition(250.px, 306.px)
     ),
     PointerInputData(
-        timestamp = 216698344L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698344.milliseconds,
         down = true,
         position = createPxPosition(249.14285278320312.px, 314.px)
     ),
     PointerInputData(
-        timestamp = 216698351L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698351.milliseconds,
         down = true,
         position = createPxPosition(247.42857360839844.px, 319.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216698359L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698359.milliseconds,
         down = true,
         position = createPxPosition(245.14285278320312.px, 326.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216698366L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698366.milliseconds,
         down = true,
         position = createPxPosition(241.7142791748047.px, 339.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216698374L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698374.milliseconds,
         down = true,
         position = createPxPosition(238.57142639160156.px, 355.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = 216698382L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698382.milliseconds,
         down = true,
         position = createPxPosition(236.2857208251953.px, 374.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = 216698390L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698390.milliseconds,
         down = true,
         position = createPxPosition(235.14285278320312.px, 396.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = 216698398L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698398.milliseconds,
         down = true,
         position = createPxPosition(236.57142639160156.px, 421.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216698406L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698406.milliseconds,
         down = true,
         position = createPxPosition(241.14285278320312.px, 451.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216698421L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698421.milliseconds,
         down = false,
         position = createPxPosition(241.14285278320312.px, 451.4285583496094.px)
     )
@@ -1657,32 +1658,32 @@
 
 val interruptedVelocityEventData: List<PointerInputData> = listOf(
     PointerInputData(
-        timestamp = 216698321L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698321.milliseconds,
         down = true,
         position = createPxPosition(250.px, 306.px)
     ),
     PointerInputData(
-        timestamp = 216698328L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698328.milliseconds,
         down = true,
         position = createPxPosition(250.px, 306.px)
     ),
     PointerInputData(
-        timestamp = 216698344L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698344.milliseconds,
         down = true,
         position = createPxPosition(249.14285278320312.px, 314.px)
     ),
     PointerInputData(
-        timestamp = 216698351L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698351.milliseconds,
         down = true,
         position = createPxPosition(247.42857360839844.px, 319.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = 216698359L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698359.milliseconds,
         down = true,
         position = createPxPosition(245.14285278320312.px, 326.8571472167969.px)
     ),
     PointerInputData(
-        timestamp = 216698366L.millisecondsToTimestamp(),
+        uptime = Uptime.Boot + 216698366.milliseconds,
         down = true,
         position = createPxPosition(241.7142791748047.px, 339.4285583496094.px)
     ),
@@ -1692,32 +1693,32 @@
 // in velocity_tracker.dart.
 
     PointerInputData(
-        timestamp = (216698374 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698374 + 40).milliseconds,
         down = true,
         position = createPxPosition(238.57142639160156.px, 355.71429443359375.px)
     ),
     PointerInputData(
-        timestamp = (216698382 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698382 + 40).milliseconds,
         down = true,
         position = createPxPosition(236.2857208251953.px, 374.28570556640625.px)
     ),
     PointerInputData(
-        timestamp = (216698390 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698390 + 40).milliseconds,
         down = true,
         position = createPxPosition(235.14285278320312.px, 396.5714416503906.px)
     ),
     PointerInputData(
-        timestamp = (216698398 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698398 + 40).milliseconds,
         down = true,
         position = createPxPosition(236.57142639160156.px, 421.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = (216698406 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698406 + 40).milliseconds,
         down = true,
         position = createPxPosition(241.14285278320312.px, 451.4285583496094.px)
     ),
     PointerInputData(
-        timestamp = (216698421 + 40).toLong().millisecondsToTimestamp(),
+        uptime = Uptime.Boot + (216698421 + 40).milliseconds,
         down = false,
         position = createPxPosition(241.14285278320312.px, 451.4285583496094.px)
     )
diff --git a/ui/ui-platform/src/androidTest/java/androidx/ui/core/pointerinput/MotionEventAdapterTest.kt b/ui/ui-platform/src/androidTest/java/androidx/ui/core/pointerinput/MotionEventAdapterTest.kt
index d9ea7d6..ab3a208 100644
--- a/ui/ui-platform/src/androidTest/java/androidx/ui/core/pointerinput/MotionEventAdapterTest.kt
+++ b/ui/ui-platform/src/androidTest/java/androidx/ui/core/pointerinput/MotionEventAdapterTest.kt
@@ -39,9 +39,9 @@
             arrayOf(PointerCoords(2967f, 5928f))
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(1))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
     }
@@ -58,10 +58,10 @@
         )
 
         val actual = motionEvent.toPointerInputEvent()
-        val timestamp = actual.timestamp
+        val uptime = actual.uptime
         val pointers = actual.pointers
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(1))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
     }
@@ -77,9 +77,9 @@
             arrayOf(PointerCoords(2967f, 5928f))
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(1))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
     }
@@ -95,9 +95,9 @@
             arrayOf(PointerCoords(2967f, 5928f))
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(1))
         assertPointerInputEventData(pointers[0], 8290, false, 2967f, 5928f)
     }
@@ -119,9 +119,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(2))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -144,9 +144,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(2))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -171,9 +171,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -199,9 +199,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -227,9 +227,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -253,9 +253,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(2))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -279,9 +279,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(2))
         assertPointerInputEventData(pointers[0], 8290, false, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -304,9 +304,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(2))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, false, 1942f, 6729f)
@@ -331,9 +331,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, false, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -359,9 +359,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, false, 1942f, 6729f)
@@ -387,9 +387,9 @@
             )
         )
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(2_894_000_000L))
+        assertThat(uptime.nanoseconds, `is`(2_894_000_000L))
         assertThat(pointers.size, `is`(3))
         assertPointerInputEventData(pointers[0], 8290, true, 2967f, 5928f)
         assertPointerInputEventData(pointers[1], 1516, true, 1942f, 6729f)
@@ -409,9 +409,9 @@
 
         motionEvent.offsetLocation(10f, 20f)
 
-        val (timestamp, pointers) = motionEvent.toPointerInputEvent()
+        val (uptime, pointers) = motionEvent.toPointerInputEvent()
 
-        assertThat(timestamp.nanoseconds, `is`(0L))
+        assertThat(uptime.nanoseconds, `is`(0L))
         assertThat(pointers.size, `is`(1))
         assertPointerInputEventData(pointers[0], 0, true, 1f, 2f)
     }
diff --git a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/MotionEventAdapter.kt b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/MotionEventAdapter.kt
index 565dc99..26018fb 100644
--- a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/MotionEventAdapter.kt
+++ b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/MotionEventAdapter.kt
@@ -19,10 +19,11 @@
 import android.view.MotionEvent
 import android.view.MotionEvent.ACTION_POINTER_UP
 import android.view.MotionEvent.ACTION_UP
+import androidx.ui.core.NanosecondsPerMillisecond
 import androidx.ui.core.PointerInputData
 import androidx.ui.core.PxPosition
-import androidx.ui.core.Timestamp
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.Uptime
+import androidx.ui.core.milliseconds
 import androidx.ui.core.px
 
 /**
@@ -47,7 +48,7 @@
         )
     }
 
-    return PointerInputEvent(eventTime.millisecondsToTimestamp(), pointers)
+    return PointerInputEvent(Uptime.Boot + eventTime.milliseconds, pointers)
 }
 
 /**
@@ -61,7 +62,7 @@
     return PointerInputEventData(
         motionEvent.getPointerId(index),
         PointerInputData(
-            motionEvent.eventTime.millisecondsToTimestamp(),
+            Uptime(motionEvent.eventTime * NanosecondsPerMillisecond),
             motionEvent,
             index,
             upIndex
@@ -73,7 +74,7 @@
  * Creates a new [PointerInputData] with coordinates that are relative to the screen.
  */
 private fun PointerInputData(
-    timestamp: Timestamp,
+    uptime: Uptime,
     motionEvent: MotionEvent,
     index: Int,
     upIndex: Int?
@@ -81,7 +82,7 @@
     val offset = PxPosition(motionEvent.getX(index).px, motionEvent.getY(index).px)
 
     return PointerInputData(
-        timestamp,
+        uptime,
         offset,
         index != upIndex
     )
diff --git a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEvent.kt b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEvent.kt
index b6085bd..d3f31cd 100644
--- a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEvent.kt
+++ b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEvent.kt
@@ -16,18 +16,18 @@
 
 package androidx.ui.core.pointerinput
 
-import androidx.ui.core.Timestamp
 import androidx.ui.core.PointerInputData
+import androidx.ui.core.Uptime
 
-// TODO(shepshapard): PointerInputEvent probably doesn't need it's own Timestamp because each
-// PointerInputData has a timestamp associated with it.  Going to wait to refactor sometime later
+// TODO(shepshapard): PointerInputEvent probably doesn't need it's own Uptime because each
+// PointerInputData has a Uptime associated with it.  Going to wait to refactor sometime later
 // after more things are set (and after things like API review) to avoid thrashing.
 /**
  * The normalized data structure for pointer input event information that is taken in processed by
  * Compose (via the [PointerInputEventProcessor]).
  */
 internal data class PointerInputEvent(
-    val timestamp: Timestamp,
+    val uptime: Uptime,
     val pointers: List<PointerInputEventData>
 )
 
diff --git a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEventProcessor.kt b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEventProcessor.kt
index 1e261d1..0b04b15 100644
--- a/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEventProcessor.kt
+++ b/ui/ui-platform/src/main/java/androidx/ui/core/pointerinput/PointerInputEventProcessor.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.PointerInputData
 import androidx.ui.core.PointerInputNode
 import androidx.ui.core.PxPosition
-import androidx.ui.core.Timestamp
+import androidx.ui.core.Uptime
 import androidx.ui.core.changedToDownIgnoreConsumed
 import androidx.ui.core.changedToUpIgnoreConsumed
 import androidx.ui.core.toOffset
@@ -242,7 +242,7 @@
                 previousPointerInputData.remove(it.id)
             }
         }
-        return PointerInputChangeEvent(pointerEvent.timestamp, changes)
+        return PointerInputChangeEvent(pointerEvent.uptime, changes)
     }
 
     /**
@@ -253,11 +253,11 @@
     }
 }
 
-// TODO(shepshapard): The timestamp property probably doesn't need to exist (and therefore, nor does
+// TODO(shepshapard): The uptime property probably doesn't need to exist (and therefore, nor does
 // this class, but going to wait to refactor it out till after things like API review to avoid
 // thrashing.
 private data class PointerInputChangeEvent(
-    val timestamp: Timestamp,
+    val uptime: Uptime,
     val changes: List<PointerInputChange>
 )
 
diff --git a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt
index 6735c0a..b7f97ab 100644
--- a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt
+++ b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/HitPathTrackerTest.kt
@@ -29,11 +29,12 @@
 import androidx.ui.core.PointerInputNode
 import androidx.ui.core.PxPosition
 import androidx.ui.core.SemanticsComponentNode
+import androidx.ui.core.Uptime
 import androidx.ui.core.add
 import androidx.ui.core.consumeDownChange
 import androidx.ui.core.consumePositionChange
 import androidx.ui.core.ipx
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.core.positionChange
 import androidx.ui.core.px
 import androidx.ui.testutils.down
@@ -307,7 +308,7 @@
         hitResult.addHitPath(3, listOf(pin1, pin2))
         hitResult.addHitPath(5, listOf(pin3, pin4))
         val event1 = down(3)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 7f, 9f)
+        val event2 = down(5).moveTo(10.milliseconds, 7f, 9f)
 
         hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -378,7 +379,7 @@
         hitResult.addHitPath(3, listOf(parent, child1))
         hitResult.addHitPath(5, listOf(parent, child2))
         val event1 = down(3)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 7f, 9f)
+        val event2 = down(5).moveTo(10.milliseconds, 7f, 9f)
 
         hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -456,7 +457,7 @@
         hitResult.addHitPath(3, listOf(child1, child2))
         hitResult.addHitPath(5, listOf(child1, child2))
         val event1 = down(3)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 7f, 9f)
+        val event2 = down(5).moveTo(10.milliseconds, 7f, 9f)
 
         hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -582,7 +583,7 @@
             }
         })
         hitResult.addHitPath(13, listOf(pin1, pin2, pin3))
-        val change = down(13).moveTo(10L.millisecondsToTimestamp(), 0f, 130f)
+        val change = down(13).moveTo(10.milliseconds, 0f, 130f)
 
         val result = hitResult.dispatchChanges(
             listOf(change),
@@ -661,8 +662,8 @@
         })
         hitResult.addHitPath(3, listOf(pin1, pin2))
         hitResult.addHitPath(5, listOf(pin3, pin4))
-        val event1 = down(3).moveTo(10L.millisecondsToTimestamp(), 0f, 24f)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 0f, -24f)
+        val event1 = down(3).moveTo(10.milliseconds, 0f, 24f)
+        val event2 = down(5).moveTo(10.milliseconds, 0f, -24f)
 
         val result = hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -760,8 +761,8 @@
         })
         hitResult.addHitPath(3, listOf(parent, child1))
         hitResult.addHitPath(5, listOf(parent, child2))
-        val event1 = down(3).moveTo(10L.millisecondsToTimestamp(), 0f, 1000f)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 0f, -1000f)
+        val event1 = down(3).moveTo(10.milliseconds, 0f, 1000f)
+        val event2 = down(5).moveTo(10.milliseconds, 0f, -1000f)
 
         val result = hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -838,8 +839,8 @@
         })
         hitResult.addHitPath(3, listOf(child1, child2))
         hitResult.addHitPath(5, listOf(child1, child2))
-        val event1 = down(3).moveTo(10L.millisecondsToTimestamp(), 0f, 1000f)
-        val event2 = down(5).moveTo(10L.millisecondsToTimestamp(), 0f, -1000f)
+        val event1 = down(3).moveTo(10.milliseconds, 0f, 1000f)
+        val event2 = down(5).moveTo(10.milliseconds, 0f, -1000f)
 
         val result = hitResult.dispatchChanges(
             listOf(event1, event2),
@@ -2476,7 +2477,7 @@
         // Assert
 
         hitResult.dispatchChanges(
-            listOf(down(3, 7L.millisecondsToTimestamp(), pointerX.toFloat(), pointerY.toFloat())),
+            listOf(down(3, 7.milliseconds, pointerX.toFloat(), pointerY.toFloat())),
             PointerEventPass.InitialDown, PointerEventPass.PreUp
         )
 
@@ -2490,7 +2491,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - additionalOffset,
                     true
                 ),
@@ -2500,7 +2501,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - middleOffset - additionalOffset,
                     true
                 ),
@@ -2510,7 +2511,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - middleOffset - childOffset - additionalOffset,
                     true
                 ),
@@ -2688,7 +2689,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointerPosition - parentOffset2 - additionalOffset2,
                     true
                 ),
@@ -2698,7 +2699,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointerPosition - parentOffset2 - childOffset2 - additionalOffset2,
                     true
                 ),
@@ -2716,7 +2717,7 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointerX.toFloat(),
                     pointerY.toFloat()
                 )
@@ -2799,7 +2800,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer1Offset - parent1Offset - additionalOffset,
                     true
                 ),
@@ -2809,7 +2810,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer1Offset - parent1Offset - child1Offset - additionalOffset,
                     true
                 ),
@@ -2829,7 +2830,7 @@
             PointerInputChange(
                 id = 5,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer2Offset - parent2Offset - additionalOffset,
                     true
                 ),
@@ -2839,7 +2840,7 @@
             PointerInputChange(
                 id = 5,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer2Offset - parent2Offset - child2Offset - additionalOffset,
                     true
                 ),
@@ -2857,13 +2858,13 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointer1Offset.x.value,
                     pointer1Offset.y.value
                 ),
                 down(
                     5,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointer2Offset.x.value,
                     pointer2Offset.y.value
                 )
@@ -2948,7 +2949,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer1Offset - parentOffset - additionalOffset,
                     true
                 ),
@@ -2958,7 +2959,7 @@
             PointerInputChange(
                 id = 5,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer2Offset - parentOffset - additionalOffset,
                     true
                 ),
@@ -2971,7 +2972,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer1Offset - parentOffset - child1Offset - additionalOffset,
                     true
                 ),
@@ -2984,7 +2985,7 @@
             PointerInputChange(
                 id = 5,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointer2Offset - parentOffset - child2Offset - additionalOffset,
                     true
                 ),
@@ -2997,13 +2998,13 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointer1Offset.x.value,
                     pointer1Offset.y.value
                 ),
                 down(
                     5,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointer2Offset.x.value,
                     pointer2Offset.y.value
                 )
@@ -3077,7 +3078,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointerOffset - parentOffset1 - parentOffset2 - childOffset - additionalOffset,
                     true
                 ),
@@ -3089,7 +3090,7 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointerOffset.x.value,
                     pointerOffset.y.value
                 )
@@ -3164,7 +3165,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointerOffset - parentOffset1 - parentOffset2 - parentOffset3 -
                             additionalOffset,
                     true
@@ -3175,7 +3176,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     pointerOffset - parentOffset1 - parentOffset2 - parentOffset3 -
                             childOffset1 - childOffset2 - additionalOffset,
                     true
@@ -3194,7 +3195,7 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointerOffset.x.value,
                     pointerOffset.y.value
                 )
@@ -3281,7 +3282,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     PxPosition(pointerXExpected.px, pointerYExpected.px),
                     true
                 ),
@@ -3293,7 +3294,7 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     pointerX.toFloat(),
                     pointerY.toFloat()
                 )
@@ -3334,7 +3335,7 @@
             PointerInputChange(
                 id = 3,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     PxPosition(50.px, 50.px),
                     true
                 ),
@@ -3346,7 +3347,7 @@
             listOf(
                 down(
                     3,
-                    7L.millisecondsToTimestamp(),
+                    7.milliseconds,
                     150f,
                     250f
                 )
diff --git a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/PointerInputEventProcessorTest.kt b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/PointerInputEventProcessorTest.kt
index fb9da34..5f08b95 100644
--- a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/PointerInputEventProcessorTest.kt
+++ b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/PointerInputEventProcessorTest.kt
@@ -31,8 +31,9 @@
 import androidx.ui.core.PointerInputNode
 import androidx.ui.core.PxPosition
 import androidx.ui.core.SemanticsComponentNode
+import androidx.ui.core.Uptime
 import androidx.ui.core.ipx
-import androidx.ui.core.millisecondsToTimestamp
+import androidx.ui.core.milliseconds
 import androidx.ui.core.px
 import com.nhaarman.mockitokotlin2.any
 import com.nhaarman.mockitokotlin2.eq
@@ -105,28 +106,28 @@
         val offset2 = PxPosition(300.px, 400.px)
 
         val events = arrayOf(
-            PointerInputEvent(8712, 3L.millisecondsToTimestamp(), offset, true),
-            PointerInputEvent(8712, 11L.millisecondsToTimestamp(), offset2, true),
-            PointerInputEvent(8712, 13L.millisecondsToTimestamp(), offset2, false)
+            PointerInputEvent(8712, Uptime.Boot + 3.milliseconds, offset, true),
+            PointerInputEvent(8712, Uptime.Boot + 11.milliseconds, offset2, true),
+            PointerInputEvent(8712, Uptime.Boot + 13.milliseconds, offset2, false)
         )
 
         val expectedChanges = arrayOf(
             PointerInputChange(
                 id = 8712,
-                current = PointerInputData(3L.millisecondsToTimestamp(), offset, true),
+                current = PointerInputData(Uptime.Boot + 3.milliseconds, offset, true),
                 previous = PointerInputData(null, null, false),
                 consumed = ConsumedData()
             ),
             PointerInputChange(
                 id = 8712,
-                current = PointerInputData(11L.millisecondsToTimestamp(), offset2, true),
-                previous = PointerInputData(3L.millisecondsToTimestamp(), offset, true),
+                current = PointerInputData(Uptime.Boot + 11.milliseconds, offset2, true),
+                previous = PointerInputData(Uptime.Boot + 3.milliseconds, offset, true),
                 consumed = ConsumedData()
             ),
             PointerInputChange(
                 id = 8712,
-                current = PointerInputData(13L.millisecondsToTimestamp(), offset2, false),
-                previous = PointerInputData(11L.millisecondsToTimestamp(), offset2, true),
+                current = PointerInputData(Uptime.Boot + 13.milliseconds, offset2, false),
+                previous = PointerInputData(Uptime.Boot + 11.milliseconds, offset2, true),
                 consumed = ConsumedData()
             )
         )
@@ -170,14 +171,14 @@
         )
 
         val events = Array(4) { index ->
-            PointerInputEvent(index, 5L.millisecondsToTimestamp(), offsets[index], true)
+            PointerInputEvent(index, Uptime.Boot + 5.milliseconds, offsets[index], true)
         }
 
         val expectedChanges = Array(4) { index ->
             PointerInputChange(
                 id = index,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     offsets[index] - childOffset,
                     true
                 ),
@@ -231,7 +232,7 @@
         )
 
         val events = Array(8) { index ->
-            PointerInputEvent(index, 0L.millisecondsToTimestamp(), offsets[index], true)
+            PointerInputEvent(index, Uptime.Boot + 0.milliseconds, offsets[index], true)
         }
 
         // Act
@@ -291,7 +292,7 @@
             else -> throw IllegalStateException()
         }
 
-        val event = PointerInputEvent(0, 5L.millisecondsToTimestamp(), offset, true)
+        val event = PointerInputEvent(0, Uptime.Boot + 5.milliseconds, offset, true)
 
         // Act
 
@@ -363,21 +364,21 @@
         val input = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(100.px, 0.px),
                 true
             ),
-            previous = PointerInputData(3L.millisecondsToTimestamp(), PxPosition(0.px, 0.px), true),
+            previous = PointerInputData(Uptime.Boot + 3.milliseconds, PxPosition(0.px, 0.px), true),
             consumed = ConsumedData(positionChange = PxPosition(0.px, 0.px))
         )
         val output = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(100.px, 0.px),
                 true
             ),
-            previous = PointerInputData(3L.millisecondsToTimestamp(), PxPosition(0.px, 0.px), true),
+            previous = PointerInputData(Uptime.Boot + 3.milliseconds, PxPosition(0.px, 0.px), true),
             consumed = ConsumedData(positionChange = PxPosition(13.px, 0.px))
         )
 
@@ -401,13 +402,13 @@
 
         val down = PointerInputEvent(
             0,
-            3L.millisecondsToTimestamp(),
+            Uptime.Boot + 3.milliseconds,
             PxPosition(0.px, 0.px),
             true
         )
         val move = PointerInputEvent(
             0,
-            5L.millisecondsToTimestamp(),
+            Uptime.Boot + 5.milliseconds,
             PxPosition(100.px, 0.px),
             true
         )
@@ -507,7 +508,7 @@
 
         val offset = PxPosition(pointerX.px, pointerY.px)
 
-        val down = PointerInputEvent(0, 7L.millisecondsToTimestamp(), offset, true)
+        val down = PointerInputEvent(0, Uptime.Boot + 7.milliseconds, offset, true)
 
         val pointerInputNodes = arrayOf(
             parentPointerInputNode,
@@ -519,7 +520,7 @@
             PointerInputChange(
                 id = 0,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - additionalOffset,
                     true
                 ),
@@ -529,7 +530,7 @@
             PointerInputChange(
                 id = 0,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - middleOffset - additionalOffset,
                     true
                 ),
@@ -539,7 +540,7 @@
             PointerInputChange(
                 id = 0,
                 current = PointerInputData(
-                    7L.millisecondsToTimestamp(),
+                    Uptime.Boot + 7.milliseconds,
                     offset - middleOffset - childOffset - additionalOffset,
                     true
                 ),
@@ -611,23 +612,23 @@
         val offset2 = PxPosition(75.px, 75.px)
 
         val down = PointerInputEvent(
-            5L.millisecondsToTimestamp(),
+            Uptime.Boot + 5.milliseconds,
             listOf(
-                PointerInputEventData(0, 5L.millisecondsToTimestamp(), offset1, true),
-                PointerInputEventData(1, 5L.millisecondsToTimestamp(), offset2, true)
+                PointerInputEventData(0, Uptime.Boot + 5.milliseconds, offset1, true),
+                PointerInputEventData(1, Uptime.Boot + 5.milliseconds, offset2, true)
             )
         )
 
         val expectedChange1 = PointerInputChange(
             id = 0,
-            current = PointerInputData(5L.millisecondsToTimestamp(), offset1, true),
+            current = PointerInputData(Uptime.Boot + 5.milliseconds, offset1, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
         val expectedChange2 = PointerInputChange(
             id = 1,
             current = PointerInputData(
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 offset2 - PxPosition(50.px, 50.px),
                 true
             ),
@@ -708,24 +709,24 @@
         val offset3 = PxPosition(125.px, 125.px)
 
         val down = PointerInputEvent(
-            5L.millisecondsToTimestamp(),
+            Uptime.Boot + 5.milliseconds,
             listOf(
-                PointerInputEventData(0, 5L.millisecondsToTimestamp(), offset1, true),
-                PointerInputEventData(1, 5L.millisecondsToTimestamp(), offset2, true),
-                PointerInputEventData(2, 5L.millisecondsToTimestamp(), offset3, true)
+                PointerInputEventData(0, Uptime.Boot + 5.milliseconds, offset1, true),
+                PointerInputEventData(1, Uptime.Boot + 5.milliseconds, offset2, true),
+                PointerInputEventData(2, Uptime.Boot + 5.milliseconds, offset3, true)
             )
         )
 
         val expectedChange1 = PointerInputChange(
             id = 0,
-            current = PointerInputData(5L.millisecondsToTimestamp(), offset1, true),
+            current = PointerInputData(Uptime.Boot + 5.milliseconds, offset1, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
         val expectedChange2 = PointerInputChange(
             id = 1,
             current = PointerInputData(
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 offset2 - PxPosition(50.px, 50.px),
                 true
             ),
@@ -735,7 +736,7 @@
         val expectedChange3 = PointerInputChange(
             id = 2,
             current = PointerInputData(
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 offset3 - PxPosition(100.px, 100.px),
                 true
             ),
@@ -805,24 +806,24 @@
         val offset3 = PxPosition(50.px, 125.px)
 
         val down = PointerInputEvent(
-            7L.millisecondsToTimestamp(),
+            Uptime.Boot + 7.milliseconds,
             listOf(
-                PointerInputEventData(0, 7L.millisecondsToTimestamp(), offset1, true),
-                PointerInputEventData(1, 7L.millisecondsToTimestamp(), offset2, true),
-                PointerInputEventData(2, 7L.millisecondsToTimestamp(), offset3, true)
+                PointerInputEventData(0, Uptime.Boot + 7.milliseconds, offset1, true),
+                PointerInputEventData(1, Uptime.Boot + 7.milliseconds, offset2, true),
+                PointerInputEventData(2, Uptime.Boot + 7.milliseconds, offset3, true)
             )
         )
 
         val expectedChange1 = PointerInputChange(
             id = 0,
-            current = PointerInputData(7L.millisecondsToTimestamp(), offset1, true),
+            current = PointerInputData(Uptime.Boot + 7.milliseconds, offset1, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
         val expectedChange2 = PointerInputChange(
             id = 1,
             current = PointerInputData(
-                7L.millisecondsToTimestamp(),
+                Uptime.Boot + 7.milliseconds,
                 offset2 - PxPosition(25.px, 50.px),
                 true
             ),
@@ -831,7 +832,7 @@
         )
         val expectedChange3 = PointerInputChange(
             id = 2,
-            current = PointerInputData(7L.millisecondsToTimestamp(), offset3, true),
+            current = PointerInputData(Uptime.Boot + 7.milliseconds, offset3, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
@@ -899,24 +900,24 @@
         val offset3 = PxPosition(125.px, 50.px)
 
         val down = PointerInputEvent(
-            11L.millisecondsToTimestamp(),
+            Uptime.Boot + 11.milliseconds,
             listOf(
-                PointerInputEventData(0, 11L.millisecondsToTimestamp(), offset1, true),
-                PointerInputEventData(1, 11L.millisecondsToTimestamp(), offset2, true),
-                PointerInputEventData(2, 11L.millisecondsToTimestamp(), offset3, true)
+                PointerInputEventData(0, Uptime.Boot + 11.milliseconds, offset1, true),
+                PointerInputEventData(1, Uptime.Boot + 11.milliseconds, offset2, true),
+                PointerInputEventData(2, Uptime.Boot + 11.milliseconds, offset3, true)
             )
         )
 
         val expectedChange1 = PointerInputChange(
             id = 0,
-            current = PointerInputData(11L.millisecondsToTimestamp(), offset1, true),
+            current = PointerInputData(Uptime.Boot + 11.milliseconds, offset1, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
         val expectedChange2 = PointerInputChange(
             id = 1,
             current = PointerInputData(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 offset2 - PxPosition(50.px, 25.px),
                 true
             ),
@@ -925,7 +926,7 @@
         )
         val expectedChange3 = PointerInputChange(
             id = 2,
-            current = PointerInputData(11L.millisecondsToTimestamp(), offset3, true),
+            current = PointerInputData(Uptime.Boot + 11.milliseconds, offset3, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
@@ -1016,9 +1017,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1033,7 +1034,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         offsetsThatHit[it] - PxPosition(100.px, 100.px),
                         true
                     ),
@@ -1113,9 +1114,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1130,7 +1131,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         offsetsThatHit[it] - PxPosition(100.px, 100.px),
                         true
                     ),
@@ -1224,9 +1225,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1241,7 +1242,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         PxPosition(
                             if (offsetsThatHit[it].x == 1.px) 1.px else 0.px,
                             if (offsetsThatHit[it].y == 1.px) 1.px else 0.px
@@ -1327,9 +1328,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1344,7 +1345,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         offsetsThatHit[it] - PxPosition(50.px, 50.px),
                         true
                     ),
@@ -1424,9 +1425,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1441,7 +1442,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         offsetsThatHit[it] - PxPosition(100.px, 100.px),
                         true
                     ),
@@ -1508,9 +1509,9 @@
         val allOffsets = offsetsThatHit + offsetsThatMiss
         val pointerInputEvent =
             PointerInputEvent(
-                11L.millisecondsToTimestamp(),
+                Uptime.Boot + 11.milliseconds,
                 (allOffsets.indices).map {
-                    PointerInputEventData(it, 11L.millisecondsToTimestamp(), allOffsets[it], true)
+                    PointerInputEventData(it, Uptime.Boot + 11.milliseconds, allOffsets[it], true)
                 }
             )
 
@@ -1525,7 +1526,7 @@
                 PointerInputChange(
                     id = it,
                     current = PointerInputData(
-                        11L.millisecondsToTimestamp(),
+                        Uptime.Boot + 11.milliseconds,
                         offsetsThatHit[it] - PxPosition(1.px, 1.px),
                         true
                     ),
@@ -1566,16 +1567,16 @@
         val offset1 = PxPosition(50.px, 75.px)
 
         val down = PointerInputEvent(
-            7L.millisecondsToTimestamp(),
+            Uptime.Boot + 7.milliseconds,
             listOf(
-                PointerInputEventData(0, 7L.millisecondsToTimestamp(), offset1, true)
+                PointerInputEventData(0, Uptime.Boot + 7.milliseconds, offset1, true)
             )
         )
 
         val expectedChange = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                7L.millisecondsToTimestamp(),
+                Uptime.Boot + 7.milliseconds,
                 offset1 - PxPosition(25.px, 50.px),
                 true
             ),
@@ -1637,16 +1638,16 @@
         val offset1 = PxPosition(499.px, 499.px)
 
         val downEvent = PointerInputEvent(
-            7L.millisecondsToTimestamp(),
+            Uptime.Boot + 7.milliseconds,
             listOf(
-                PointerInputEventData(0, 7L.millisecondsToTimestamp(), offset1, true)
+                PointerInputEventData(0, Uptime.Boot + 7.milliseconds, offset1, true)
             )
         )
 
         val expectedChange = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                7L.millisecondsToTimestamp(),
+                Uptime.Boot + 7.milliseconds,
                 offset1 - PxPosition(1.px + 2.px + 3.px + 4.px, 5.px + 6.px + 7.px + 8.px),
                 true
             ),
@@ -1709,16 +1710,16 @@
         val offset1 = PxPosition(499.px, 499.px)
 
         val downEvent = PointerInputEvent(
-            3L.millisecondsToTimestamp(),
+            Uptime.Boot + 3.milliseconds,
             listOf(
-                PointerInputEventData(0, 3L.millisecondsToTimestamp(), offset1, true)
+                PointerInputEventData(0, Uptime.Boot + 3.milliseconds, offset1, true)
             )
         )
 
         val expectedChange1 = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                3L.millisecondsToTimestamp(),
+                Uptime.Boot + 3.milliseconds,
                 offset1 - PxPosition(
                     1.px + 2.px + 3.px + 4.px + 5.px,
                     6.px + 7.px + 8.px + 9.px + 10.px
@@ -1732,7 +1733,7 @@
         val expectedChange2 = PointerInputChange(
             id = 0,
             current = PointerInputData(
-                3L.millisecondsToTimestamp(),
+                Uptime.Boot + 3.milliseconds,
                 offset1 - PxPosition(3.px + 4.px + 5.px, 8.px + 9.px + 10.px),
                 true
             ),
@@ -1794,7 +1795,7 @@
         }
 
         val down = PointerInputEvent(
-            1, 0L.millisecondsToTimestamp(), PxPosition(50.px, 50.px), true
+            1, Uptime.Boot + 0.milliseconds, PxPosition(50.px, 50.px), true
         )
 
         // Act
@@ -1824,7 +1825,7 @@
         }
 
         val down = PointerInputEvent(
-            1, 0L.millisecondsToTimestamp(), PxPosition(50.px, 50.px), true
+            1, Uptime.Boot + 0.milliseconds, PxPosition(50.px, 50.px), true
         )
 
         // Act
@@ -1846,7 +1847,7 @@
         }
 
         val down = PointerInputEvent(
-            1, 0L.millisecondsToTimestamp(), PxPosition(50.px, 50.px), true
+            1, Uptime.Boot + 0.milliseconds, PxPosition(50.px, 50.px), true
         )
 
         // Act
@@ -1873,7 +1874,7 @@
         }
 
         val down = PointerInputEvent(
-            1, 0L.millisecondsToTimestamp(), PxPosition(50.px, 50.px), true
+            1, Uptime.Boot + 0.milliseconds, PxPosition(50.px, 50.px), true
         )
 
         // Act
@@ -1895,7 +1896,7 @@
         }
 
         val down = PointerInputEvent(
-            1, 0L.millisecondsToTimestamp(), PxPosition(50.px, 50.px), true
+            1, Uptime.Boot + 0.milliseconds, PxPosition(50.px, 50.px), true
         )
 
         // Act
@@ -1927,20 +1928,20 @@
 
         val offset = PxPosition(50.px, 50.px)
 
-        val down = PointerInputEvent(0, 7L.millisecondsToTimestamp(), offset, true)
-        val up = PointerInputEvent(0, 11L.millisecondsToTimestamp(), null, false)
+        val down = PointerInputEvent(0, Uptime.Boot + 7.milliseconds, offset, true)
+        val up = PointerInputEvent(0, Uptime.Boot + 11.milliseconds, null, false)
 
         val expectedDownChange = PointerInputChange(
             id = 0,
-            current = PointerInputData(7L.millisecondsToTimestamp(), offset, true),
+            current = PointerInputData(Uptime.Boot + 7.milliseconds, offset, true),
             previous = PointerInputData(null, null, false),
             consumed = ConsumedData()
         )
 
         val expectedUpChange = PointerInputChange(
             id = 0,
-            current = PointerInputData(11L.millisecondsToTimestamp(), null, false),
-            previous = PointerInputData(7L.millisecondsToTimestamp(), offset, true),
+            current = PointerInputData(Uptime.Boot + 11.milliseconds, null, false),
+            previous = PointerInputData(Uptime.Boot + 7.milliseconds, offset, true),
             consumed = ConsumedData()
         )
 
@@ -1984,7 +1985,7 @@
         val pointerInputEvent =
             PointerInputEvent(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(250.px, 250.px),
                 true
             )
@@ -1993,7 +1994,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(250.px, 250.px),
                     true
                 ),
@@ -2039,24 +2040,24 @@
         val pointerInputEvent1 =
             PointerInputEvent(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(200.px, 200.px),
                 true
             )
 
         val pointerInputEvent2 =
             PointerInputEvent(
-                10L.millisecondsToTimestamp(),
+                Uptime.Boot + 10.milliseconds,
                 listOf(
                     PointerInputEventData(
                         7,
-                        10L.millisecondsToTimestamp(),
+                        Uptime.Boot + 10.milliseconds,
                         PxPosition(200.px, 200.px),
                         true
                     ),
                     PointerInputEventData(
                         9,
-                        10L.millisecondsToTimestamp(),
+                        Uptime.Boot + 10.milliseconds,
                         PxPosition(300.px, 300.px),
                         true
                     )
@@ -2068,7 +2069,7 @@
                 PointerInputChange(
                     id = 7,
                     current = PointerInputData(
-                        5L.millisecondsToTimestamp(),
+                        Uptime.Boot + 5.milliseconds,
                         PxPosition(200.px, 200.px),
                         true
                     ),
@@ -2082,12 +2083,12 @@
                 PointerInputChange(
                     id = 7,
                     current = PointerInputData(
-                        10L.millisecondsToTimestamp(),
+                        Uptime.Boot + 10.milliseconds,
                         PxPosition(200.px, 200.px),
                         true
                     ),
                     previous = PointerInputData(
-                        5L.millisecondsToTimestamp(),
+                        Uptime.Boot + 5.milliseconds,
                         PxPosition(200.px, 200.px),
                         true
                     ),
@@ -2096,7 +2097,7 @@
                 PointerInputChange(
                     id = 9,
                     current = PointerInputData(
-                        10L.millisecondsToTimestamp(),
+                        Uptime.Boot + 10.milliseconds,
                         PxPosition(300.px, 300.px),
                         true
                     ),
@@ -2157,7 +2158,7 @@
         val pointerInputEventData1 =
             PointerInputEventData(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(100.px, 100.px),
                 true
             )
@@ -2165,13 +2166,13 @@
         val pointerInputEventData2 =
             PointerInputEventData(
                 9,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(300.px, 300.px),
                 true
             )
 
         val pointerInputEvent = PointerInputEvent(
-            5L.millisecondsToTimestamp(),
+            Uptime.Boot + 5.milliseconds,
             listOf(pointerInputEventData1, pointerInputEventData2)
         )
 
@@ -2179,7 +2180,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(100.px, 100.px),
                     true
                 ),
@@ -2191,7 +2192,7 @@
             PointerInputChange(
                 id = 9,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(100.px, 100.px),
                     true
                 ),
@@ -2249,7 +2250,7 @@
         val down =
             PointerInputEvent(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(200.px, 200.px),
                 true
             )
@@ -2257,7 +2258,7 @@
         val move =
             PointerInputEvent(
                 7,
-                10L.millisecondsToTimestamp(),
+                Uptime.Boot + 10.milliseconds,
                 PxPosition(300.px, 300.px),
                 true
             )
@@ -2266,7 +2267,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(200.px, 200.px),
                     true
                 ),
@@ -2278,12 +2279,12 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    10L.millisecondsToTimestamp(),
+                    Uptime.Boot + 10.milliseconds,
                     PxPosition(300.px, 300.px),
                     true
                 ),
                 previous = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(200.px, 200.px),
                     true
                 ),
@@ -2336,7 +2337,7 @@
         val down =
             PointerInputEvent(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(200.px, 200.px),
                 true
             )
@@ -2345,7 +2346,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(200.px, 200.px),
                     true
                 ),
@@ -2391,7 +2392,7 @@
         val down1 =
             PointerInputEvent(
                 7,
-                5L.millisecondsToTimestamp(),
+                Uptime.Boot + 5.milliseconds,
                 PxPosition(200.px, 200.px),
                 true
             )
@@ -2399,7 +2400,7 @@
         val down2 =
             PointerInputEvent(
                 7,
-                10L.millisecondsToTimestamp(),
+                Uptime.Boot + 10.milliseconds,
                 PxPosition(200.px, 200.px),
                 true
             )
@@ -2408,7 +2409,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    5L.millisecondsToTimestamp(),
+                    Uptime.Boot + 5.milliseconds,
                     PxPosition(200.px, 200.px),
                     true
                 ),
@@ -2420,7 +2421,7 @@
             PointerInputChange(
                 id = 7,
                 current = PointerInputData(
-                    10L.millisecondsToTimestamp(),
+                    Uptime.Boot + 10.milliseconds,
                     PxPosition(200.px, 200.px),
                     true
                 ),
diff --git a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/TestUtils.kt b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/TestUtils.kt
index b92dc8b..771117f 100644
--- a/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/TestUtils.kt
+++ b/ui/ui-platform/src/test/java/androidx/ui/core/pointerinput/TestUtils.kt
@@ -27,8 +27,9 @@
 import androidx.ui.core.PointerInputChange
 import androidx.ui.core.PointerInputHandler
 import androidx.ui.core.PxPosition
-import androidx.ui.core.Timestamp
+import androidx.ui.core.Uptime
 import androidx.ui.core.ipx
+import androidx.ui.core.PointerInputData
 
 /**
  * This class enables Mockito to spy.
@@ -76,23 +77,23 @@
 
 internal fun PointerInputEventData(
     id: Int,
-    timestamp: Timestamp,
+    uptime: Uptime,
     position: PxPosition?,
     down: Boolean
 ): PointerInputEventData {
-    val pointerInputData = androidx.ui.core.PointerInputData(timestamp, position, down)
+    val pointerInputData = PointerInputData(uptime, position, down)
     return PointerInputEventData(id, pointerInputData)
 }
 
 internal fun PointerInputEvent(
     id: Int,
-    timestamp: Timestamp,
+    uptime: Uptime,
     position: PxPosition?,
     down: Boolean
 ): PointerInputEvent {
     return PointerInputEvent(
-        timestamp,
-        listOf(PointerInputEventData(id, timestamp, position, down))
+        uptime,
+        listOf(PointerInputEventData(id, uptime, position, down))
     )
 }