runnable on ruby1.9.3