improve chapter21.py