refactor logic,genericType