diff --git a/src/timer.rs b/src/timer.rs
index 946c6e5..0ab76cc 100644
--- a/src/timer.rs
+++ b/src/timer.rs
@@ -53,14 +53,14 @@
             syscalls::command(DRIVER_NUMBER, command_nr::IS_DRIVER_AVAILABLE, 0, 0)?;
 
         let clock_frequency =
-            syscalls::command(DRIVER_NUMBER, command_nr::GET_CLOCK_FREQUENCY, 0, 0)?;
+            unsafe { syscalls::raw::command(DRIVER_NUMBER, command_nr::GET_CLOCK_FREQUENCY, 0, 0) };
 
         if clock_frequency == 0 {
             return Err(OtherError::TimerDriverErroneousClockFrequency.into());
         }
 
         let clock_frequency = ClockFrequency {
-            hz: clock_frequency,
+            hz: clock_frequency as usize,
         };
 
         let subscription = syscalls::subscribe::<TimerEventConsumer, _>(
@@ -95,8 +95,9 @@
 
     pub fn get_current_clock(&self) -> TockResult<ClockValue> {
         Ok(ClockValue {
-            num_ticks: syscalls::command(DRIVER_NUMBER, command_nr::GET_CLOCK_VALUE, 0, 0)?
-                as isize,
+            num_ticks: unsafe {
+                syscalls::raw::command(DRIVER_NUMBER, command_nr::GET_CLOCK_VALUE, 0, 0)
+            },
             clock_frequency: self.clock_frequency,
         })
     }
@@ -130,9 +131,13 @@
         };
         let alarm_instant = now.num_ticks() as usize + ticks;
 
-        let alarm_id = syscalls::command(DRIVER_NUMBER, command_nr::SET_ALARM, alarm_instant, 0)?;
+        let alarm_id = unsafe {
+            syscalls::raw::command(DRIVER_NUMBER, command_nr::SET_ALARM, alarm_instant, 0)
+        };
 
-        Ok(Alarm { alarm_id })
+        Ok(Alarm {
+            alarm_id: alarm_id as usize,
+        })
     }
 }
 
@@ -492,7 +497,7 @@
 }
 
 fn get_current_ticks() -> TockResult<usize> {
-    syscalls::command(DRIVER_NUMBER, command_nr::GET_CLOCK_VALUE, 0, 0).map_err(|err| err.into())
+    unsafe { Ok(syscalls::raw::command(DRIVER_NUMBER, command_nr::GET_CLOCK_VALUE, 0, 0) as usize) }
 }
 fn set_alarm_at(instant: usize) -> TockResult<()> {
     syscalls::command(DRIVER_NUMBER, command_nr::SET_ALARM, instant, 0)
@@ -511,8 +516,9 @@
 }
 
 fn get_clock_frequency() -> TockResult<usize> {
-    syscalls::command(DRIVER_NUMBER, command_nr::GET_CLOCK_FREQUENCY, 0, 0)
-        .map_err(|err| err.into())
+    unsafe {
+        Ok(syscalls::raw::command(DRIVER_NUMBER, command_nr::GET_CLOCK_FREQUENCY, 0, 0) as usize)
+    }
 }
 
 fn is_over(timer: ActiveTimer, now: u32) -> bool {
