add content of ch30; finish