ch04 ch05 TODO