  posType <- string "fen" <|> string "startpos"
  spaces
  (FEN pos _ _) <- if posType == "fen"
                   then fenParser
                   else return $ FEN initialBoard 0 0
  spaces
  liftM CmdPosition $ option pos (string "moves" >> parserMoveList pos)
  where
    parserMoveList pos = do
      mm <- optionMaybe (spaces >> moveParser pos)
      case mm of
        Just m  -> parserMoveList $ makeMove m pos