Added functionality to all methods, added some of the duplicate code
inside new private methods..