requires ruby 2.0