diff --git a/gen_ipmi_sensor.pl b/gen_ipmi_sensor.pl
index fd91e6b..742da9b 100755
--- a/gen_ipmi_sensor.pl
+++ b/gen_ipmi_sensor.pl
@@ -11,17 +11,19 @@
 # Globals
 my $serverwizFile  = "";
 my $debug           = 0;
+my $outputFile     = "";
 my $metaDataFile   = "";
 
 # Command line argument parsing
 GetOptions(
 "i=s" => \$serverwizFile,    # string
 "m=s" => \$metaDataFile,     # string
+"o=s" => \$outputFile,       # string
 "d"   => \$debug,
 )
 or printUsage();
 
-if (($serverwizFile eq "") or ($metaDataFile eq ""))
+if (($serverwizFile eq "") or ($outputFile eq "") or ($metaDataFile eq ""))
 {
     printUsage();
 }
@@ -31,7 +33,10 @@
 
 #open the mrw xml and the metaData file for the sensor.
 #Fetch the sensorid,sensortype,class,object path from the mrw.
+#Get the metadata for that sensor from the metadata file.
+#Merge the data into the outputfile
 
+open(my $fh, '>', $outputFile) or die "Could not open file '$outputFile' $!";
 my $sensorTypeConfig = LoadFile($metaDataFile);
 
 my @interestedTypes = keys %{$sensorTypeConfig};
@@ -61,12 +66,13 @@
         $path = $targetObj->getAttribute($target, "INSTANCE_PATH");
 
         #not interested in this sensortype
-        next if (not exists $types{$sensorType} );
+        next if (not exists $types{$sensorType});
 
         #if there is ipmi sensor without sensorid or sensorReadingType or
         #Instance path then die
 
         if ($sensorID eq '' or $sensorReadingType eq '' or $path eq '') {
+            close $fh;
             die("sensor without info for target=$target");
         }
 
@@ -77,20 +83,57 @@
 
         #if unable to get the obmc path then die
         if (not defined $obmcPath) {
+            close $fh;
             die("Unable to get the obmc path for path=$path");
         }
 
+        print $fh $sensorID.":\n";
+
         printDebug("$sensorID : $sensorType : $sensorReadingType :$obmcPath \n");
 
+        writeToFile($sensorType,$sensorReadingType,$obmcPath,$sensorTypeConfig,$fh);
+
     }
 
 }
+close $fh;
+
+
+#Get the metadata for the incoming sensortype from the loaded config file.
+#Write the sensor data into the output file
+
+sub writeToFile
+{
+    my ($sensorType,$sensorReadingType,$path,$sensorTypeConfig,$fh) = @_;
+    print $fh "  sensorType: ".$sensorType."\n";
+    print $fh "  path: ".$path."\n";
+    print $fh "  sensorReadingType: ".$sensorReadingType."\n";
+    print $fh "  interfaces:"."\n";
+
+    my $interfaces = $sensorTypeConfig->{$sensorType};
+    #Walk over all the interfces as it needs to be written
+    while (my ($interface,$properties) = each %{$interfaces}) {
+        print $fh "    ".$interface.":\n";
+        #walk over all the properties as it needs to be written
+        while (my ($dbusProperty,$dbusPropertyValue) = each %{$properties}) {
+                    #will write property named "Property" first then
+                    #other properties.
+            print $fh "      ".$dbusProperty.":\n";
+            while (my ( $offset,$values) = each %{$dbusPropertyValue}) {
+                print $fh "        $offset:\n";
+                while (my ( $key,$value) = each %{$values})  {
+                    print $fh "          $key: ". $value."\n";
+                }
+            }
+        }
+    }
+}
 
 # Usage
 sub printUsage
 {
     print "
-    $0 -i [MRW filename] -m [SensorMetaData filename] [OPTIONS]
+    $0 -i [MRW filename] -m [SensorMetaData filename] -o [Output filename] [OPTIONS]
 Options:
     -d = debug mode
         \n";
@@ -103,4 +146,3 @@
     my $str = shift;
     print "DEBUG: ", $str, "\n" if $debug;
 }
-
