refactoring. read readme for guide