Ruby 2.0 compatible implementation