#include <string.h>
 #include <errno.h>
 #include <stdio.h>
+#include <sys/time.h>
 #include <time.h>
 #include <dlfcn.h>
 #include <malloc.h>
 #include <unistd.h>
 #include <getopt.h>
 
+#include "glite/lb/context.h"
+#include "glite/lb/jobstat.h"
+
 #include "glite/jp/types.h"
 #include "glite/jp/context.h"
 #include "glite/jp/backend.h"
        char *err;
        init_f *plugin_init;
        done_f *plugin_done;
-       int opt;
+       int i,opt;
 
        /* get arguments */
        while ((opt = getopt_long(argc,argv,
 
                plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_lastStatusHistory, &attrval);
                if (attrval) {
-                       fprintf(stdout,"\t<lastStatusHistory>%s</lastStatusHistory>\n", attrval->value);
+                       fprintf(stdout,"\t<lastStatusHistory>\n");
+                       for (i = 1; i < EDG_WLL_NUMBER_OF_STATCODES; i++) {
+                               char *stat = edg_wll_StatToString(i);
+                               fprintf(stdout,"\t<status>\n");
+                               fprintf(stdout,"\t\t<status>%s</status>\n", stat);
+                               fprintf(stdout,"\t\t<timestamp>%ld.%06ld</timestamp>\n", attrval[i].timestamp,0);
+                               fprintf(stdout,"\t\t<reason>%s</reason>\n", attrval[i].value ? attrval[i].value : "");
+                               fprintf(stdout,"\t</status>\n");
+                               if (stat) free(stat);
+                       }
+                       fprintf(stdout,"\t</lastStatusHistory>\n");
                        free_attrs(attrval);
                }
 
                plugin_data.ops.attr(jpctx, data_handle, GLITE_JP_LB_fullStatusHistory, &attrval);
                if (attrval) {
-                       fprintf(stdout,"\t<fullStatusHistory>%s</fullStatusHistory>\n", attrval->value);
+                       fprintf(stdout,"\t<fullStatusHistory>\n");
+                       for (i = 1; i < EDG_WLL_NUMBER_OF_STATCODES; i++) {
+                               char *stat = edg_wll_StatToString(i);
+                               fprintf(stdout,"\t<status>\n");
+                               fprintf(stdout,"\t\t<status>%s</status>\n", stat);
+                               fprintf(stdout,"\t\t<timestamp>%ld.%06ld</timestamp>\n", attrval[i].timestamp,0);
+                               fprintf(stdout,"\t\t<reason>%s</reason>\n", attrval[i].value ? attrval[i].value : "");
+                               fprintf(stdout,"\t</status>\n");
+                               if (stat) free(stat);
+                       }
+                       fprintf(stdout,"\t</fullStatusHistory>\n");
                        free_attrs(attrval);
                }