diff --git a/src/main.lua b/src/main.lua
index dbdf366..be7b7f5 100644
--- a/src/main.lua
+++ b/src/main.lua
@@ -7,10 +7,31 @@ import 'CoreLibs/object.lua'
 import 'CoreLibs/timer.lua'
 import 'CoreLibs/ui.lua'
 
---- @alias XYPair { x: number, y: number }
---- @alias Base { x: number, y: number }
---- @alias Runner { x: number, y: number, nextBase: Base, prevBase: Base | nil, forcedTo: Base }
---- @alias Fielder { onArrive: fun() | nil, x: number | nil, y: number | nil, target: XYPair | nil, speed: number }
+--- @alias XYPair {
+---   x: number,
+---   y: number,
+--- }
+
+--- @alias Base {
+---   x: number,
+---   y: number,
+--- }
+
+--- @alias Runner {
+---   x: number,
+---   y: number,
+---   nextBase: Base,
+---   prevBase: Base | nil,
+---   forcedTo: Base | nil,
+--- }
+
+--- @alias Fielder {
+---   onArrive: fun() | nil,
+---   x: number | nil,
+---   y: number | nil,
+---   target: XYPair | nil,
+---   speed: number,
+--- }
 
 import 'graphics.lua'
 import 'scoreboard.lua'
@@ -34,7 +55,7 @@ local PlayerImageBlipper <const> = blipper.new(100, "images/game/player.png", "i
 
 local DanceBounceMs <const> = 500
 local DanceBounceCount <const> = 4
-local FielderDanceAnimator <const> = gfx.animator.new(DanceBounceMs, 10, 0, easingHill) --, -1 * DanceBounceMs * DanceBounceCount)
+local FielderDanceAnimator <const> = gfx.animator.new(DanceBounceMs, 10, 0, easingHill)
 FielderDanceAnimator.repeatCount = DanceBounceCount - 1
 
 local BallOffscreen <const> = 999
@@ -200,14 +221,6 @@ function playdate.AButtonDown()
 	pitch()
 end
 
-function playdate.upButtonDown() end
-
-function playdate.downButtonDown() end
-
-function playdate.rightButtonDown() end
-
-function playdate.leftButtonDown() end
-
 local elapsedSec = 0
 local crankChange = 0
 local acceleratedChange
@@ -282,7 +295,7 @@ function updateFielders()
 			else
 				fielder.target = nil
 				if fielder.onArrive then
-					fielder.onArrive()
+					fielder:onArrive()
 				end
 			end
 		end
@@ -436,6 +449,20 @@ function init()
 	playdate.getSystemMenu():addMenuItem("Restart game", function() end)
 end
 
+function tryToThrowOut(self)
+	self.onArrive = nil
+	local targetX, targetY = getNextThrowTarget()
+	if targetX ~= nil and targetY ~= nil then
+		local nearestFielder = getNearestOf(fielders, targetX, targetY)
+		nearestFielder.target = xy(targetX, targetY)
+		if nearestFielder == self then
+			ball.heldBy = self
+		else
+			throwBall(targetX, targetY, playdate.easingFunctions.linear, nil, true)
+		end
+	end
+end
+
 function updateBatting()
 	secondsSincePitchAllowed = secondsSincePitchAllowed + deltaSeconds
 	if secondsSincePitchAllowed > PitchAfterSeconds then
@@ -482,19 +509,7 @@ function updateBatting()
 
 		local chasingFielder = getNearestOf(fielders, ballDestX, ballDestY)
 		chasingFielder.target = { x = ballDestX, y = ballDestY }
-		chasingFielder.onArrive = function()
-			chasingFielder.onArrive = nil
-			local targetX, targetY = getNextThrowTarget()
-			if targetX ~= nil and targetY ~= nil then
-				local nearestFielder = getNearestOf(fielders, targetX, targetY)
-				nearestFielder.target = xy(targetX, targetY)
-				if nearestFielder == chasingFielder then
-					ball.heldBy = chasingFielder
-				else
-					throwBall(targetX, targetY, playdate.easingFunctions.linear, nil, true)
-				end
-			end
-		end
+		chasingFielder.onArrive = tryToThrowOut
 	end
 end
 
diff --git a/src/scoreboard.lua b/src/scoreboard.lua
index db4eb2b..a9ba418 100644
--- a/src/scoreboard.lua
+++ b/src/scoreboard.lua
@@ -29,7 +29,8 @@ function drawScoreboard(x, y, teams, outs)
 	gfx.setColor(gfx.kColorWhite)
 
 	function circleParams(i)
-		return (x + ScoreboardMarginX + OutBubbleRadius) + (i * 2.5 * OutBubbleRadius), y + 46, OutBubbleRadius
+		local circleOffset = i * 2.5 * OutBubbleRadius
+		return (x + ScoreboardMarginX + OutBubbleRadius) + circleOffset, y + 46, OutBubbleRadius
 	end
 
 	for i = outs, 2 do