diff --git a/Inventory.pm b/Inventory.pm
index 8015f66..dc8fba4 100644
--- a/Inventory.pm
+++ b/Inventory.pm
@@ -31,6 +31,8 @@
 
     pruneModuleCards($targetObj, \@inventory);
 
+    makeOBMCNames($targetObj, \@inventory);
+
     return @inventory;
 }
 
@@ -99,6 +101,55 @@
     }
 }
 
+
+#Makes the OpenBMC name for the targets in the inventory.
+#Removes unnecessary segments of the path name, renames
+#some segments to match standard conventions, and numbers
+#segments based on their position attribute.
+sub makeOBMCNames
+{
+    my ($targetObj, $inventory) = @_;
+
+    #Remove connector segments from the OBMC_NAME
+    removeConnectors($targetObj, $inventory);
+
+}
+
+
+#Removes connectors from the OBMC_NAME element.  Also
+#takes the POSITION value of the connector and adds it
+#to the card segment that plugs into the connector.
+#For example:
+#  /motherboard/card-conn-5/card-0 ->
+#  /motherobard/card-5
+sub removeConnectors
+{
+    my ($targetObj, $inventory) = @_;
+
+    #Find the connectors embedded in the segments
+    for my $item (@$inventory) {
+
+        #Split the target into segments, then start
+        #adding segments in to make new targets
+        my @segments = split('/', $item->{TARGET});
+        my $target = "";
+        for my $s (@segments) {
+            next if (length($s) == 0);
+
+            $target .= "/$s";
+            my $class = $targetObj->getAttribute($target, "CLASS");
+            next unless ($class eq "CONNECTOR");
+
+            my ($segment) = $target =~ /\b(\w+-\d+)$/;
+            my $pos = $targetObj->getAttribute($target, "POSITION");
+
+            #change /connector-11/card-2/ to /card-11/
+            $item->{OBMC_NAME} =~ s/\b$segment\/(\w+)-\d+/$1-$pos/;
+
+        }
+    }
+}
+
 1;
 
 =head1 NAME
