Themes in Core v1

Fresh branch from a clean master
Actually, I was just thinking of `setThemes`, but I agree that the other two don't need to be public as well.