no reason for this not to be compatible with as many versions of ruby as possible