@movitto I have another idea.

You see how you have to check whether a path or name was provided here and also at line 82 below?  I think all of this complexity can go away and you can just do LogicalVolume.new :name => name_or_path_value... so the .create method below should be unchanged, I think.  See my thought below:

How about something like this:

```ruby
def initialize(args = {})
 @volume_group = args[:volume_group]
 @sectors      = args[:sectors]
 self.path     = args[:name]
 self.name     = args[:name]
 ...

end

def path=(value)
  @path = value.include?(File::SEPARATOR) ? value : DEVICE_PATH.join(@volume_group.name, value)
end

def name=(value)
  @name = value.include?(File::SEPARATOR) ? value.split(File::SEPARATOR).last : value
end

```