adapted to ruby 1.9