diff --git a/gen_devtree.pl b/gen_devtree.pl
index 2b58203..d4f27e8 100755
--- a/gen_devtree.pl
+++ b/gen_devtree.pl
@@ -205,8 +205,9 @@
 
     #Future: could do more validation on the actual values
 
-    $memory{reg} = "<$g_configuration{memory}{base} " .
-                   "$g_configuration{memory}{size}>";
+    addRegProp(\%memory,
+               $g_configuration{memory}{base},
+               $g_configuration{memory}{size});
 
     return %memory;
 }
@@ -284,7 +285,7 @@
             "$size is invalid\n";
     }
 
-    $node{"reg"} = "<$base $size>";
+    addRegProp(\%node, $base, $size);
     my $name = makeNodeName("region", $node{reg});
 
     return ($name, \%node);
@@ -337,7 +338,7 @@
         die "ERROR:  No BMC SPI flashes found connected to the BMC\n";
     }
 
-    $bmcFlash{fmc}{status} = "okay";
+    statusOK(\%{$bmcFlash{fmc}});
 
     foreach my $spi (@{$connections->{CONN}}) {
 
@@ -353,7 +354,7 @@
 
                 $bmcFlash{fmc}{$flashName}{COMMENT} = connectionComment($spi);
 
-                $bmcFlash{fmc}{$flashName}{status} = "okay";
+                statusOK(\%{$bmcFlash{fmc}{$flashName}});
 
                 #Add in anything specified in the config file for this chip.
                 addBMCFlashConfigProperties(\%{$bmcFlash{fmc}{$flashName}},
@@ -490,7 +491,7 @@
         my $unitNum = $g_targetObj->getAttribute($spi->{SOURCE},
                                                  "CHIP_UNIT");
         if ($unitNum == $spiNum) {
-            $spiMaster{status} = "okay";
+            statusOK(\%spiMaster);
 
             #Add in any pinctrl properties.  These would come from the parent
             #of $spi{SOURCE}, which would be a unit-pingroup-bmc if the
@@ -502,7 +503,7 @@
 
             $spiMaster{$flashName}{COMMENT} = connectionComment($spi);
 
-            $spiMaster{$flashName}{status} = "okay";
+            statusOK(\%{$spiMaster{$flashName}});
 
             #AST2500 PNORs need a label
             my $function = $g_targetObj->getAttribute($spi->{SOURCE},
@@ -531,7 +532,7 @@
 {
     my %node;
     if (exists $g_configuration{"lpc-host-spi-flash-mailbox"}) {
-        $node{status} = "okay";
+        statusOK(\%node);
     }
 
     return %node;
@@ -551,7 +552,7 @@
     my %node;
     if (exists $g_configuration{"lpc-host-spi-flash-mailbox"}) {
 
-        $node{status} = "okay";
+        statusOK(\%node);
 
         #Point to the reserved-memory region label
         $node{"memory-region"} = "<(ref)" .
@@ -696,7 +697,7 @@
         my $num = $g_targetObj->getAttribute($uart->{SOURCE}, "CHIP_UNIT");
         my $name = "uart$num";
 
-        $node{$name}{status} = "okay";
+        statusOK(\%{$node{$name}});
         $node{$name}{COMMENT} = connectionComment($uart);
 
         #Add in any pinctrl properties.  These would come from the parent
@@ -738,7 +739,7 @@
                                                   "USE_HW_CHECKSUM");
 
         my $name = "mac$num";
-        $node{$name}{status} = "okay";
+        statusOK(\%{$node{$name}});
 
         if ($ncsi == 1) {
             $node{$name}{"use-ncsi"} = ZERO_LENGTH_PROPERTY;
@@ -774,7 +775,7 @@
 
     #For now, enable 1 node all the time.
     #TBD if this needs to be fixed
-    $node{vuart}{status} = "okay";
+    statusOK(\%{$node{vuart}});
 
     push @nodes, { %node };
 
@@ -832,7 +833,7 @@
 
         #Put it in the format we want to print it in
         $i2cAddress = adjustI2CAddress($i2cAddress);
-        $deviceNode{reg} = "<$i2cAddress>";
+        addRegProp(\%deviceNode, $i2cAddress);
 
         $deviceName = makeNodeName($deviceName, $deviceNode{reg});
 
@@ -872,7 +873,7 @@
         #busNodeName is the hash twice so when we loop
         #below it doesn't get lost
         my $busNodeName = "i2c$busNum";
-        $busNodes{$busNodeName}{$busNodeName}{status} = "okay";
+        statusOK(\%{$busNodes{$busNodeName}{$busNodeName}});
         $busNodes{$busNodeName}{$busNodeName}{$deviceName} = { %deviceNode };
 
         #Add in any pinctrl properties.  These would come from the parent
@@ -1355,6 +1356,36 @@
 }
 
 
+#Adds a {status} = "okay" element to the hash passed in.
+# $node = reference to the hash to add element to
+sub statusOK
+{
+    my $node = shift;
+    $node->{status} = "okay";
+}
+
+
+#Adds the {reg} element to the hash passed in using the values
+#passed in.  Resulting value looks like: "<val1  val2  etc>"
+# $node = reference to the hash to add element to
+# @values = the values for the property.  May be passed in one at
+#           a time and not as an array.
+sub addRegProp
+{
+    my $node = shift;
+    my @values = @_;
+
+    $node->{reg} = "<";
+    for (my $i = 0; $i < scalar @values; $i++) {
+        $node->{reg} .= $values[$i];
+        if ($i < (scalar @values) - 1) {
+            $node->{reg} .= " ";
+        }
+    }
+    $node->{reg} .= ">";
+}
+
+
 sub printUsage
 {
     print "gen_devtree.pl -x [XML filename] -y [yaml config file] " .
