Refactor to support multiple themes with true inheritance