Reviewed by Tim Hatcher (earlier version).