updated: Example 8.1, Example 8.2