complete abstraction of league-specific logic