pauseMenu :: Application -> Parent -> AppState -> GameState -> Int -> AppState
pauseMenu app parent continueLevel gameState =
  menuAppState app PauseMenu (Just continueLevel) (
    MenuItem (p "continue") (const continueLevel) :
--     (p "rewind to last save point", todo) :
    MenuItem (p "retry from beginning") (const $ freeGameState gameState (retryLevel gameState)) :
    MenuItem (p "options") (generalOptions app 0 . this) :
    MenuItem (p "help") (playHelp app . this) :
    MenuItem (p "quit level") (const $ freeGameState gameState parent) :
    [])
  where
    this = pauseMenu app parent continueLevel gameState
pauseMenu :: Application -> Parent -> AppState -> GameState -> Int -> AppState
pauseMenu app parent continueLevel gameState =
  menuAppState app PauseMenu (Just continueLevel) (
    MenuItem (p "continue") (const continueLevel) :
--     (p "rewind to last save point", todo) :
    MenuItem (p "retry from beginning") (const $ freeGameState gameState (retryLevel gameState)) :
    MenuItem (p "options") (generalOptions app 0 . this) :
    MenuItem (p "help") (playHelp app . this) :
    MenuItem (p "quit level") (const $ freeGameState gameState parent) :
    [])
  where
    this = pauseMenu app parent continueLevel gameState
pauseMenu app parent continueLevel gameState =
  menuAppState app PauseMenu (Just continueLevel) (
    MenuItem (p "continue") (const continueLevel) :
--     (p "rewind to last save point", todo) :
    MenuItem (p "retry from beginning") (const $ freeGameState gameState (retryLevel gameState)) :
    MenuItem (p "options") (generalOptions app 0 . this) :
    MenuItem (p "help") (playHelp app . this) :
    MenuItem (p "quit level") (const $ freeGameState gameState parent) :
    [])
  where
    this = pauseMenu app parent continueLevel gameState