now only work with ruby-1.9 or later