Review comments
diff --git a/src/buttons.rs b/src/buttons.rs
index 5787f83..aac5cb2 100644
--- a/src/buttons.rs
+++ b/src/buttons.rs
@@ -1,6 +1,7 @@
 use crate::callback::CallbackSubscription;
 use crate::callback::Consumer;
 use crate::result::OtherError;
+use crate::result::OutOfRangeError;
 use crate::result::TockResult;
 use crate::syscalls;
 use core::marker::PhantomData;
@@ -41,14 +42,15 @@
         self.num_buttons
     }
 
-    pub fn get(&self, button_num: usize) -> Option<Button> {
+    /// Returns the button at 0-based index `button_num`
+    pub fn get(&self, button_num: usize) -> Result<Button, OutOfRangeError> {
         if button_num < self.num_buttons {
-            Some(Button {
+            Ok(Button {
                 button_num,
                 lifetime: PhantomData,
             })
         } else {
-            None
+            Err(OutOfRangeError)
         }
     }