use reflections
usable with ruby 1.9; add specs
bump version