second commit with refactoring to incorporate self
second commit with refactorying
2nd Commit refactory