ruby 1.8 compatibility