refactor, take off relection added switch