refactor and remove some features