    fn input_move_right(&self, controls: &Controls, stack: &Stack) -> Self {
        self.try_moving_piece(stack, controls.right, controls.left, |piece| {
            piece.move_right()
        })
    }

    fn input_rotate_left(&self, controls: &Controls, stack: &Stack) -> Self {
        self.try_moving_piece(stack, controls.primary, controls.secondary, |piece| {
            piece.rotate_left()
        })
    }

    fn input_rotate_right(&self, controls: &Controls, stack: &Stack) -> Self {
        self.try_moving_piece(stack, controls.secondary, controls.primary, |piece| {