compatible with ruby>=1.9.3