switch algo