backport for ruby 1.8