diff --git a/lib/common/src/instruction.rs b/lib/common/src/instruction.rs
index d1d6e36f..3b71db98 100644
--- a/lib/common/src/instruction.rs
+++ b/lib/common/src/instruction.rs
@@ -5,6 +5,14 @@ pub struct TimedInstruction<I,T>{
 	pub time:Time<T>,
 	pub instruction:I,
 }
+impl<I,T> TimedInstruction<I,T>{
+	pub fn set_time<TimeInner>(self,new_time:Time<TimeInner>)->TimedInstruction<I,TimeInner>{
+		TimedInstruction{
+			time:new_time,
+			instruction:self.instruction,
+		}
+	}
+}
 
 /// Ensure all emitted instructions are processed before consuming external instructions
 pub trait InstructionEmitter<I>{
diff --git a/strafe-client/src/session.rs b/strafe-client/src/session.rs
index 5764d7c5..14d52bc2 100644
--- a/strafe-client/src/session.rs
+++ b/strafe-client/src/session.rs
@@ -181,12 +181,8 @@ impl InstructionConsumer<Instruction<'_>> for Session{
 impl InstructionConsumer<StepInstruction> for Session{
 	type TimeInner=SessionTimeInner;
 	fn process_instruction(&mut self,ins:TimedInstruction<StepInstruction,Self::TimeInner>){
-		// ins.time ignored???
-		let ins_retimed=TimedInstruction{
-			time:self.simulation.timer.time(ins.time),
-			instruction:ins.instruction,
-		};
-		if let Some(instruction)=self.mouse_interpolator.pop_buffered_instruction(ins_retimed){
+		let time=self.simulation.timer.time(ins.time);
+		if let Some(instruction)=self.mouse_interpolator.pop_buffered_instruction(ins.set_time(time)){
 			self.simulation.physics.run_input_instruction(instruction);
 		}
 	}