code clean up and refactoring