refactoring and read me update