add ex17, 19, 20(unfinished)