adopted to ruby 2.0