refactor and switch