compatible with ruby 1.8