major refactoring
feature engineering