Issue: Should the Season be the top level object, or the League.

Discussion: There is one reason for making the League the top object.  If the user has only one league, the various seasons will appear in a hierarchical file system below the league, keeping the file system more streamlined.  Since this will most likely be the common situation, it is a strong argument for using the League as the top object.  An entire League, with many seasons can be backed up under one directory/folder, the League.  Otherwise the backup would require going through all Season directory/folders looking for the desired League.

On the other hand, if the Season is the top object, and there are several Leagues, it will keep the Season together for all Leagues.  As the Leagues transition to a new Season, the previous Season can be backed up and left alone.  Only the current Season will be used, with all of the needed Leagues appearing underneath it.  Since there would most likely be a default Season, it is then easy to create a list of the Leagues for that Season to choose from.

If I were a secretary for multiple leagues, I would probably file things by season first, rather than by league first.  It makes sense to me to be able to archive a season as one directory/folder, and only deal with the current season directory/folder.

Conclusion: While there are compelling arguments for either method, my own preference is for the Season too be the top object, with the League(s) falling underneath.  One strong argument for doing this is because while a single league may exist for many seasons, it may very well change how it works.  These changes need to be documented for each season.  Placing the Leagues under the Season allows for separate League characteristics for each Season.