through assignment 3