added link in question1, refactored a sorting methods in question3, used custom comparable method