perhaps this? ```rust struct OverflowError; trait Duration: Copy + Eq + PartialEq + Hash + Add + Sub + Mul + Div { fn from_secs(secs: u32) -> Result; fn from_millis(millis: u32) -> Result; fn from_micros(micros: u32) -> Result; fn as_secs(self) -> Result; fn as_millis(self) -> Result; fn as_micros(self) -> Result; } trait CountDown { type Duration: Duration; fn start(&mut self, dur: Duration); fn is_done(&mut self) -> bool; } trait CountUp { type Duration: Duration; fn start(&mut self); fn read(&mut self) -> Result; }