diff --git a/openpower/scripts/release-notes b/openpower/scripts/release-notes
index 1bb71fd..6cc966e 100755
--- a/openpower/scripts/release-notes
+++ b/openpower/scripts/release-notes
@@ -47,7 +47,7 @@
 
 open(OUTPUT, "> RELEASE.md") || die "Failed to open RELEASE.md";
 
-print OUTPUT "# Release Notes for OpenPower Firmware $end_release\n";
+print OUTPUT "# Release Notes for OpenPower Firmware $end_release  \n";
 
 if (-e $begin_worktree) {
     system("cd $begin_worktree && git checkout $begin_release && git submodule update --reference ../buildroot && git submodule update") and die "Could not update $begin_worktree";
@@ -117,11 +117,11 @@
     $sth->execute($begin_release, $end_release);
     my $r;
     print OUTPUT "\n## Removed platforms\n\n- ".$r->{p}."\n" if $r = $sth->fetchrow_hashref;
-    print OUTPUT "- ".$r->{p}."\n" while ($r = $sth->fetchrow_hashref);
+    print OUTPUT "- ".$r->{p}."  \n" while ($r = $sth->fetchrow_hashref);
 
     $sth->execute($end_release, $begin_release);
     print OUTPUT "\n## New platforms\n\n- ".$r->{p}."\n" if $r = $sth->fetchrow_hashref;
-    print OUTPUT "- ".$r->{p}."\n" while($r = $sth->fetchrow_hashref);
+    print OUTPUT "- ".$r->{p}."  \n" while($r = $sth->fetchrow_hashref);
 }
 
 my @common_platforms;
@@ -149,6 +149,7 @@
 	    $p = "witherspoon";
 	    $witherspoon_insanity = 1;
     }
+    next if ($p =~ /witherspoon_dev/);
     $repos->{"$p-xml"} = { REPO => "https://github.com/open-power/$p-xml" ,
 			   DIR => "openpower/package/$p-xml" };
 }
@@ -233,11 +234,11 @@
     $sth->execute();
 
     print OUTPUT "\n## Updated Packages\n\n";
-    print OUTPUT "Package | Old Version | New Version | Platforms\n";
+    print OUTPUT "Package | Old Version | New Version | Platforms  \n";
     my $t;
     my ($plen,$olen,$nlen,$platlen) = (3,3,3,3);
     while (my $r = $sth->fetchrow_hashref) {
-	$t.= join(' | ',($r->{pk}, $r->{o}, $r->{n}, $r->{ps}))."\n" ;
+	$t.= join(' | ',($r->{pk}, $r->{o}, $r->{n}, $r->{ps}))."  \n" ;
 	$plen = length($r->{pk}) if $plen < length($r->{pk});
 	$olen = length($r->{o}) if $olen < length($r->{o});
 	$nlen = length($r->{n}) if $nlen < length($r->{n});
@@ -252,7 +253,7 @@
 	}
     }
     print OUTPUT "-"x$plen." | "."-"x$olen." | "."-"x$nlen." | ".
-	"-"x$platlen."\n";
+	"-"x$platlen."  \n";
     print OUTPUT $t;
 }
 
@@ -268,10 +269,10 @@
     $sth->execute();
 
     print OUTPUT "\n\n## New Packages\n\n";
-    print OUTPUT "Package | Version | Platforms\n";
-    print OUTPUT "--- | --- | ---\n";
+    print OUTPUT "Package | Version | Platforms  \n";
+    print OUTPUT "--- | --- | ---  \n";
     while (my $r = $sth->fetchrow_hashref) {
-	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."  \n" ;
 	if ($r->{pk} eq 'machine-xml') {
 	    $new_level->{$r->{ps}."-xml"} = $r->{v};
 	}
@@ -290,10 +291,10 @@
     $sth->execute();
 
     print OUTPUT "\n\n## Removed Packages\n\n";
-    print OUTPUT "Package | Version | Platforms\n";
-    print OUTPUT "--- | --- | ---\n";
+    print OUTPUT "Package | Version | Platforms  \n";
+    print OUTPUT "--- | --- | ---  \n";
     while (my $r = $sth->fetchrow_hashref) {
-	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."\n" ;
+	print OUTPUT join(' | ',($r->{pk}, $r->{v}, $r->{ps}))."  \n" ;
 	if ($r->{pk} eq $r->{ps}."-xml") {
 	    $old_level->{$r->{ps}."-xml"} = $r->{v};
 	}
@@ -325,36 +326,36 @@
     my $url = $repos->{$repo}->{REPO};
     my $dir = $repos->{$repo}->{DIR};
 
-    print OUTPUT "\n## Package: $repo\n";
-    print OUTPUT "[Repository]($url)\n";
+    print OUTPUT "\n## Package: $repo  \n";
+    print OUTPUT "[Repository]($url)  \n";
     print OUTPUT "\n";
 
     # Display patches.
     if (open(LSLOG, "ls op-build/$dir/*.patch | ".
                     "xargs -n1 --no-run-if-empty basename |"))
     {
-        print OUTPUT "### Patches\n";
+        print OUTPUT "### Patches  \n";
         while (my $logline = <LSLOG>)
         {
             chomp $logline;
             print OUTPUT "* [$logline]".
-                "($op_url/tree/$end_release/$dir/$logline)\n";
+                "($op_url/tree/$end_release/$dir/$logline)  \n";
         }
         close LSLOG;
         print OUTPUT "\n";
     }
     else
     {
-        print OUTPUT "None.\n";
+        print OUTPUT "None.  \n";
     }
 
     # Display changes.
-    print OUTPUT "### Commits\n";
+    print OUTPUT "### Commits  \n";
     if ((not exists $old_level->{$package}) &&
         (not exists $new_level->{$package}))
     {
         # No change identified.
-        print "No changes: $repo\n";
+        print "No changes: $repo  \n";
         print OUTPUT "No changes.\n\n";
         next;
     }
@@ -362,7 +363,7 @@
     if ((exists $old_level->{$package}) &&
         (exists $new_level->{$package}))
     {
-        print "Changes in $repo...\n";
+        print "Changes in $repo...  \n";
         open(GITLOG, "cd $repo; git shortlog $old_level->{$package}...".
                      "$new_level->{$package} --no-merges --format=".
                      "\"- [%h]($url/commit/%h) %s\" |");
@@ -372,24 +373,24 @@
             chomp $logline;
             $logline =~ s/^[[:space:]]*//;
             $logline =~ s/:$/:\n/;
-            print OUTPUT "$logline\n";
+            print OUTPUT "$logline  \n";
         }
         close GITLOG;
-        print OUTPUT "\n";
+        print OUTPUT "  \n";
         next;
     }
 
     if (not exists $old_level->{$package})
     {
         print "New package $repo.\n";
-        print OUTPUT "New package.\n";
+        print OUTPUT "New package.  \n";
         next;
     }
 
     if (not exists $new_level->{$package})
     {
         print "Deleted package $repo.\n";
-        print OUTPUT "Package removed.\n";
+        print OUTPUT "Package removed.  \n";
         next;
     }
 }
