I think all of these changes in .create can go away if you accept name which can be a name or path, and let the LogicalVolume.new handle processing it via the path= and name= setter methods as shown above.