Week5 assign3 (not finished yet)