only support ruby >= 1.9