refactoring and renaming
still refactoring