diff --git a/agb/examples/chicken.rs b/agb/examples/chicken.rs
index 1e5882b4..df868d21 100644
--- a/agb/examples/chicken.rs
+++ b/agb/examples/chicken.rs
@@ -61,9 +61,9 @@ fn main(mut gba: agb::Gba) -> ! {
 
     let object = gba.display.object.get();
 
-    let sprite = object.get_sprite(&ChickenSprites[0]).unwrap();
+    let sprite = object.get_sprite(&ChickenSprites[0]);
     let mut chicken = Character {
-        object: object.get_object(sprite).unwrap(),
+        object: object.get_object(sprite),
         position: Vector2D {
             x: (6 * 8) << 8,
             y: ((7 * 8) - 4) << 8,
@@ -143,23 +143,19 @@ fn update_chicken_object<'a>(
         State::Ground => {
             if chicken.velocity.x.abs() > 1 << 4 {
                 chicken.object.set_sprite(
-                    object
-                        .get_sprite(&ChickenSprites[frame_ranger(frame_count, 1, 3, 10)])
-                        .unwrap(),
+                    object.get_sprite(&ChickenSprites[frame_ranger(frame_count, 1, 3, 10)]),
                 );
             } else {
                 chicken
                     .object
-                    .set_sprite(object.get_sprite(&ChickenSprites[0]).unwrap());
+                    .set_sprite(object.get_sprite(&ChickenSprites[0]));
             }
         }
         State::Upwards => {}
         State::Flapping => {
-            chicken.object.set_sprite(
-                object
-                    .get_sprite(&ChickenSprites[frame_ranger(frame_count, 4, 5, 5)])
-                    .unwrap(),
-            );
+            chicken
+                .object
+                .set_sprite(object.get_sprite(&ChickenSprites[frame_ranger(frame_count, 4, 5, 5)]));
         }
     }
 
diff --git a/agb/examples/sprites.rs b/agb/examples/sprites.rs
index 7342032b..badda4a8 100644
--- a/agb/examples/sprites.rs
+++ b/agb/examples/sprites.rs
@@ -19,9 +19,7 @@ fn all_sprites(gfx: &ObjectController) {
 
     for y in 0..9 {
         for x in 0..14 {
-            let mut obj = gfx
-                .get_object(gfx.get_sprite(&SPRITES[0]).unwrap())
-                .unwrap();
+            let mut obj = gfx.get_object(gfx.get_sprite(&SPRITES[0]));
             obj.show();
             obj.set_position((x * 16 + 8, y * 16 + 8).into());
             objs.push(obj);
@@ -49,7 +47,7 @@ fn all_sprites(gfx: &ObjectController) {
             let objs_len = objs.len();
             for (i, obj) in objs.iter_mut().enumerate() {
                 let this_image = (image + i * SPRITES.len() / objs_len) % SPRITES.len();
-                obj.set_sprite(gfx.get_sprite(&SPRITES[this_image]).unwrap());
+                obj.set_sprite(gfx.get_sprite(&SPRITES[this_image]));
                 obj.commit();
             }
         }
@@ -66,7 +64,7 @@ fn all_tags(gfx: &ObjectController) {
         let sprite = v.get_sprite(0);
         let (size_x, size_y) = sprite.size().to_width_height();
         let (size_x, size_y) = (size_x as i32, size_y as i32);
-        let mut obj = gfx.get_object(gfx.get_sprite(sprite).unwrap()).unwrap();
+        let mut obj = gfx.get_object(gfx.get_sprite(sprite));
         obj.show();
         obj.set_position((x * 32 + 16 - size_x / 2, y * 32 + 16 - size_y / 2).into());
         objs.push((obj, v));
@@ -91,7 +89,7 @@ fn all_tags(gfx: &ObjectController) {
         if count % 5 == 0 {
             image += 1;
             for (obj, tag) in objs.iter_mut() {
-                obj.set_sprite(gfx.get_sprite(tag.get_animation_sprite(image)).unwrap());
+                obj.set_sprite(gfx.get_sprite(tag.get_animation_sprite(image)));
                 obj.commit();
             }
         }
diff --git a/book/games/pong/src/main.rs b/book/games/pong/src/main.rs
index 5ccb9dfa..5a5ffb1c 100644
--- a/book/games/pong/src/main.rs
+++ b/book/games/pong/src/main.rs
@@ -24,10 +24,10 @@ fn main(mut gba: Gba) -> ! {
 
     const BALL: &Tag = GRAPHICS.tags().get("Ball");
     let ball_sprite = object
-        .get_sprite(BALL.get_sprite(0))
+        .try_get_sprite(BALL.get_sprite(0))
         .expect("We should be able to load a sprite");
     let mut ball = object
-        .get_object(ball_sprite)
+        .try_get_object(ball_sprite)
         .expect("We should have enoguh space to store an object");
 
     ball.set_x(50).set_y(50).show();
diff --git a/examples/the-hat-chooses-the-wizard/src/enemies.rs b/examples/the-hat-chooses-the-wizard/src/enemies.rs
index da9df438..501b25ec 100644
--- a/examples/the-hat-chooses-the-wizard/src/enemies.rs
+++ b/examples/the-hat-chooses-the-wizard/src/enemies.rs
@@ -165,7 +165,7 @@ impl<'a> Slime<'a> {
                 let offset = (timer / 16) as usize;
 
                 let frame = SLIME_IDLE.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
 
@@ -205,7 +205,7 @@ impl<'a> Slime<'a> {
                     self.state = SlimeState::Idle;
                 } else {
                     let frame = SLIME_JUMP.get_animation_sprite(offset);
-                    let sprite = controller.get_sprite(frame).unwrap();
+                    let sprite = controller.get_sprite(frame);
 
                     self.enemy_info.entity.sprite.set_sprite(sprite);
                 }
@@ -231,7 +231,7 @@ impl<'a> Slime<'a> {
                 }
 
                 let frame = SLIME_SPLAT.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
             }
@@ -302,7 +302,7 @@ impl<'a> Snail<'a> {
                 }
 
                 let frame = SNAIL_IDLE.get_animation_sprite(0);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
                 if player_has_collided {
@@ -322,7 +322,7 @@ impl<'a> Snail<'a> {
                 self.enemy_info.entity.velocity = (0, 0).into();
 
                 let frame = SNAIL_EMERGE.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
 
@@ -344,7 +344,7 @@ impl<'a> Snail<'a> {
                 let offset = (timer - time) as usize / 8;
 
                 let frame = SNAIL_MOVE.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
 
@@ -378,7 +378,7 @@ impl<'a> Snail<'a> {
                 }
 
                 let frame = SNAIL_EMERGE.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
                 self.enemy_info.entity.velocity = (0, 0).into();
@@ -407,7 +407,7 @@ impl<'a> Snail<'a> {
                     return UpdateState::Remove;
                 };
 
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.enemy_info.entity.sprite.set_sprite(sprite);
                 self.enemy_info.entity.velocity = (0, 0).into();
diff --git a/examples/the-hat-chooses-the-wizard/src/main.rs b/examples/the-hat-chooses-the-wizard/src/main.rs
index 211b8efa..974c6869 100644
--- a/examples/the-hat-chooses-the-wizard/src/main.rs
+++ b/examples/the-hat-chooses-the-wizard/src/main.rs
@@ -114,8 +114,8 @@ pub struct Entity<'a> {
 
 impl<'a> Entity<'a> {
     pub fn new(object: &'a ObjectController, collision_mask: Vector2D<u16>) -> Self {
-        let dummy_sprite = object.get_sprite(WALKING.get_sprite(0)).unwrap();
-        let mut sprite = object.get_object(dummy_sprite).unwrap();
+        let dummy_sprite = object.get_sprite(WALKING.get_sprite(0));
+        let mut sprite = object.get_object(dummy_sprite);
         sprite.set_priority(Priority::P1);
         Entity {
             sprite,
@@ -357,9 +357,9 @@ impl<'a> Player<'a> {
 
         wizard
             .sprite
-            .set_sprite(controller.get_sprite(HAT_SPIN_1.get_sprite(0)).unwrap());
+            .set_sprite(controller.get_sprite(HAT_SPIN_1.get_sprite(0)));
         hat.sprite
-            .set_sprite(controller.get_sprite(HAT_SPIN_1.get_sprite(0)).unwrap());
+            .set_sprite(controller.get_sprite(HAT_SPIN_1.get_sprite(0)));
 
         wizard.sprite.show();
         hat.sprite.show();
@@ -465,7 +465,7 @@ impl<'a> Player<'a> {
                 self.wizard_frame = offset as u8;
 
                 let frame = WALKING.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.wizard.sprite.set_sprite(sprite);
             }
@@ -475,7 +475,7 @@ impl<'a> Player<'a> {
                 self.wizard_frame = 5;
 
                 let frame = JUMPING.get_animation_sprite(0);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.wizard.sprite.set_sprite(sprite);
             } else if self.wizard.velocity.y > FixedNumberType::new(1) / 16 {
@@ -490,7 +490,7 @@ impl<'a> Player<'a> {
                 self.wizard_frame = 0;
 
                 let frame = FALLING.get_animation_sprite(offset);
-                let sprite = controller.get_sprite(frame).unwrap();
+                let sprite = controller.get_sprite(frame);
 
                 self.wizard.sprite.set_sprite(sprite);
             }
@@ -511,13 +511,13 @@ impl<'a> Player<'a> {
                 self.wizard.sprite.set_hflip(true);
                 self.hat
                     .sprite
-                    .set_sprite(controller.get_sprite(hat_base_tile.get_sprite(5)).unwrap());
+                    .set_sprite(controller.get_sprite(hat_base_tile.get_sprite(5)));
             }
             agb::input::Tri::Positive => {
                 self.wizard.sprite.set_hflip(false);
                 self.hat
                     .sprite
-                    .set_sprite(controller.get_sprite(hat_base_tile.get_sprite(0)).unwrap());
+                    .set_sprite(controller.get_sprite(hat_base_tile.get_sprite(0)));
             }
             _ => {}
         }
@@ -549,9 +549,7 @@ impl<'a> Player<'a> {
                 let hat_sprite_offset = (timer / hat_sprite_divider) as usize;
 
                 self.hat.sprite.set_sprite(
-                    controller
-                        .get_sprite(hat_base_tile.get_animation_sprite(hat_sprite_offset))
-                        .unwrap(),
+                    controller.get_sprite(hat_base_tile.get_animation_sprite(hat_sprite_offset)),
                 );
 
                 if self.hat_slow_counter < 30 && self.hat.velocity.magnitude() < 2.into() {
@@ -584,9 +582,7 @@ impl<'a> Player<'a> {
             }
             HatState::WizardTowards => {
                 self.hat.sprite.set_sprite(
-                    controller
-                        .get_sprite(hat_base_tile.get_animation_sprite(timer as usize / 2))
-                        .unwrap(),
+                    controller.get_sprite(hat_base_tile.get_animation_sprite(timer as usize / 2)),
                 );
                 let distance_vector =
                     self.hat.position - self.wizard.position + hat_resting_position;
@@ -687,7 +683,7 @@ impl<'a, 'b, 'c> PlayingLevel<'a, 'b> {
         self.timer += 1;
 
         let frame = PLAYER_DEATH.get_animation_sprite(self.timer as usize / 8);
-        let sprite = controller.get_sprite(frame).unwrap();
+        let sprite = controller.get_sprite(frame);
 
         self.player.wizard.velocity += (0.into(), FixedNumberType::new(1) / 32).into();
         self.player.wizard.position += self.player.wizard.velocity;