2.3.3: ruby2+ compliance
merge with 2.2.6