Implemented Task #3 and #4