reproduce commit from pushed gem
use standard gem directory tree
add unit test and fix exception when hashes is empty