See also http://magazine.rubyist.net/?0010-CodeReview