@movitto Does it make sense to process each line in a method?  You might have to splat the *process_volume_display_line.

```ruby
def self.process_volume_display_line(line)
  fields = line.split(':')
  vgname = fields[1] 
  vg = vgs.find { |vg| vg.name == vgname }
  return fields, vg 
end

def scan_volumes(cmd)
  # ...
  out.each_line do |line|
    fields, vg = process_volume_display_line(line)
    lvs << yield(fields, vg)
  end

  lvs
end
```