add switch function