Index: libabac/abac.h
===================================================================
--- libabac/abac.h	(revision 09aa24932da41410539675e230031f876aaf8f71)
+++ libabac/abac.h	(revision bc12f3d4f8058f3cc802b4b2947143a0a5e33e10)
@@ -233,4 +233,11 @@
 abac_id_t *abac_attribute_issuer_id(abac_attribute_t *ptr);
 
+// get the attribute output format (internal)
+char *abac_attribute_get_output_format(abac_attribute_t *);
+
+// set the attribute output format
+// Valid formats GENIv1.0, GENIv1.1
+void abac_attribute_set_output_format(abac_attribute_t *, char *);
+
 // get the validity period of the attribute cert
 int abac_attribute_validity(abac_attribute_t *attr, struct tm *not_before, struct tm *not_after);
Index: libabac/abac.hh
===================================================================
--- libabac/abac.hh	(revision 09aa24932da41410539675e230031f876aaf8f71)
+++ libabac/abac.hh	(revision bc12f3d4f8058f3cc802b4b2947143a0a5e33e10)
@@ -231,4 +231,8 @@
             bool baked() { return abac_attribute_baked(m_attr); }
 
+	    void set_output_format(char *fmt) {
+		abac_attribute_set_output_format(m_attr, fmt);
+	    }
+
             void write(FILE *out) {
                 int ret = abac_attribute_write(m_attr, out);
Index: libabac/abac_attribute.c
===================================================================
--- libabac/abac_attribute.c	(revision 09aa24932da41410539675e230031f876aaf8f71)
+++ libabac/abac_attribute.c	(revision bc12f3d4f8058f3cc802b4b2947143a0a5e33e10)
@@ -17,4 +17,6 @@
 #define INTERSECTION_SEP " & "
 #define SHA1_LENGTH 40
+
+#define DEFAULT_OUTPUT_FORMAT "GENIv1.1"
 
 static int debug=0;
@@ -34,4 +36,5 @@
     char *head_string;
     char **tail_strings;
+    char *output_format;
 
     abac_chunk_t cert; // the XML chunk
@@ -54,4 +57,21 @@
     return ptr->issuer_id;
 }
+
+/* Get the format for this attribute to be output in.  This is NULL if the
+ * attribute has been read from a file. */
+char *abac_attribute_get_output_format(abac_attribute_t *a) {
+    return a->output_format;
+}
+
+/* Set the format for this attribute to be output in.  Valid formats are:
+ * GENIv1.0
+ * GENIv1.1
+ */
+void abac_attribute_set_output_format(abac_attribute_t *a, char *fmt) {
+    if (a->output_format) 
+	free(a->output_format);
+    a->output_format = abac_xstrdup(fmt);
+}
+
 
 // validity is measured in seconds (as of 0.2.0)
@@ -81,4 +101,6 @@
     attr->tail_strings = NULL;
 
+    attr->output_format = abac_xstrdup(DEFAULT_OUTPUT_FORMAT);
+
     // NULL until baked
     attr->cert.ptr=NULL;
@@ -309,4 +331,5 @@
     attr->cert.ptr=(unsigned char *)abac_xstrdup(xml);
     attr->cert.len=strlen(xml);
+    attr->output_format = NULL;
 
     return attr;
@@ -414,4 +437,6 @@
 	free(attr->tail_strings[i]);
     free(attr->tail_strings);
+    if ( attr->output_format ) 
+	free(attr->output_format);
 
 /* XXX this can not be free as if it is a char string
Index: libabac/abac_xml.c
===================================================================
--- libabac/abac_xml.c	(revision 09aa24932da41410539675e230031f876aaf8f71)
+++ libabac/abac_xml.c	(revision bc12f3d4f8058f3cc802b4b2947143a0a5e33e10)
@@ -167,5 +167,7 @@
 /* The processing specializations */
 GENI_xml_processing_t xml_proc[] = {
+    { "GENIv1.0", encode_rt0_xml_v10, parse_rt0_xml_v10, template_v10},
     { "1.0", encode_rt0_xml_v10, parse_rt0_xml_v10, template_v10},
+    { "GENIv1.1", encode_rt0_xml_v11, parse_rt0_xml_v11, template_v11},
     { "1.1", encode_rt0_xml_v11, parse_rt0_xml_v11, template_v11},
     { NULL, NULL, NULL},
@@ -1009,5 +1011,5 @@
 char **read_credential(void *ctxt_id_certs, char *infile, 
 	char **in_xml) {
-    xmlChar **xml = in_xml;		    /* Cast */
+    xmlChar **xml = (xmlChar **) in_xml;    /* Cast */
     xmlDocPtr doc = xmlParseFile(infile);   /* Parse the document */
     xmlNodePtr node = NULL;		    /* XML scratch node */
@@ -1240,5 +1242,6 @@
     int len = 0;		/* length of the populated template (temp) */
 
-    GENI_xml_processing_t *proc = get_xml_processing("1.1");
+    GENI_xml_processing_t *proc = get_xml_processing(
+	    abac_attribute_get_output_format(attr));
 
     if ( !proc ) goto fail;
