completed lec 20,21,22 -- still need lec 23