Updated with improvements suggested during review.