improved switcher