diff --git a/lib/common/src/integer.rs b/lib/common/src/integer.rs
index 70bb9e3..7c56790 100644
--- a/lib/common/src/integer.rs
+++ b/lib/common/src/integer.rs
@@ -4,11 +4,11 @@ pub use ratio_ops::ratio::{Ratio,Divide};
 //integer units
 
 /// specific example of a "default" time type
-#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
+#[derive(Clone,Copy,Hash,Eq,PartialEq,Ord,PartialOrd,Debug)]
 pub enum TimeInner{}
 pub type AbsoluteTime=Time<TimeInner>;
 
-#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
+#[derive(Clone,Copy,Hash,Eq,PartialEq,Ord,PartialOrd,Debug)]
 pub struct Time<T>(i64,core::marker::PhantomData<T>);
 impl<T> Time<T>{
 	pub const MIN:Self=Self::raw(i64::MIN);
diff --git a/lib/common/src/physics.rs b/lib/common/src/physics.rs
index a70e060..3334bac 100644
--- a/lib/common/src/physics.rs
+++ b/lib/common/src/physics.rs
@@ -1,7 +1,7 @@
 use crate::mouse::MouseState;
 use crate::gameplay_modes::{ModeId,StageId};
 
-#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
+#[derive(Clone,Copy,Hash,Eq,PartialEq,Ord,PartialOrd,Debug)]
 pub enum TimeInner{}
 pub type Time=crate::integer::Time<TimeInner>;
 
diff --git a/lib/common/src/run.rs b/lib/common/src/run.rs
index 622ba4e..af9887a 100644
--- a/lib/common/src/run.rs
+++ b/lib/common/src/run.rs
@@ -2,7 +2,7 @@ use crate::timer::{TimerFixed,Realtime,Paused,Unpaused};
 
 use crate::physics::{TimeInner as PhysicsTimeInner,Time as PhysicsTime};
 
-#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
+#[derive(Clone,Copy,Hash,Eq,PartialEq,Ord,PartialOrd,Debug)]
 pub enum TimeInner{}
 pub type Time=crate::integer::Time<TimeInner>;
 
diff --git a/lib/common/src/session.rs b/lib/common/src/session.rs
index 7f2c01d..201dd9a 100644
--- a/lib/common/src/session.rs
+++ b/lib/common/src/session.rs
@@ -1,3 +1,3 @@
-#[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)]
+#[derive(Clone,Copy,Hash,Eq,PartialEq,Ord,PartialOrd,Debug)]
 pub enum TimeInner{}
 pub type Time=crate::integer::Time<TimeInner>;