support trunk, aka Ruby 2.2
refactoring: reorder
update document