ruby < 2.0 compatible