use yeld instead of block.call, use Gem.home for search, clean version check