a little more work, plus plain text version