Separated theme logic into ThemeManager