--- libgvc.vapi	2013-04-09 14:16:29.000000000 -0400
+++ libgvc.vapi.new	2013-07-05 20:24:01.493375245 -0400
@@ -28,16 +28,42 @@
 	public void initlib ( size_t graphinfo, size_t nodeinfo, size_t  edgeinfo);
 
 	[CCode (cname = "aginit")]
-	public void init ();
+	/* public void init ();
+	   RHS: aginit now wants 
+	   (Agraph_t * g, int kind, char *rec_name, int rec_size, int move_to_front) */
+	public void init (Graph g, int kind, string rec_name, bool move_to_front);
 
-	[CCode (cprefix = "")]
-	public enum GraphKind {
-		AGRAPH,
-		AGRAPHSTRICT,
-		AGDIGRAPH,
-		AGDIGRAPHSTRICT,
-		AGMETAGRAPH,
-	}
+	[Compact]
+	[CCode (cname = "Agdesc_t")]
+	public class Desc {
+	};
+	/* Agdesc has 8 bit fields, in order:
+		DIRECTED
+		STRICT
+		NO_LOOP
+		MAINGRAPH
+		FLATLOCK
+		NO_WRITE
+		HAS_ATTRS
+		HAS_CMPND
+	*/
+
+	/* RHS: gv.cpp has examples of these being IFDEF's for if you
+	        don't have cgraph; at least some of their usage (with
+	        agopen) has been replaced with Agdesc_t, which is not an
+	        enum.  4 defined Agdesc_t's are externed in cgraph.h.  In
+	        GraphViz's source, they're defined in lib/cgraph/graph.c
+			Agdesc_t is a struct Agdesc_s
+      gv.cpp:
+	   AGDIGRAPH => Agdirected
+	   AGRAPHSTRICT => Agstrictundirected
+	   AGDIGRAPHSTRICT => Agstrictdirected
+	   AGRAPH => Agundirected
+	*/
+	public Desc Agdirected; // Desc.DIRECTED | Desc.MAINGRAPH;
+	public Desc Agstrictdirected; //  Desc.DIRECTED | Desc.STRICT | Desc.MAINGRAPH;
+	public Desc Agundirected; // Desc.MAINGRAPH;
+	public Desc Agstrictundirected; // Desc.STRICT | Desc.MAINGRAPH;
 
 	[CCode (cname = "agerrlevel_t", cheader_filename = "gvc.h", cprefix = "")]
 	public enum ErrorLevel {
@@ -111,7 +137,12 @@
 	[CCode (cname = "Agraph_t", free_function = "agclose")]
 	public class Graph {
 		[CCode (cname = "agopen")]
-		public Graph ([CCode (type = "char*")] string graph_name, GraphKind kind);
+		/* public Graph ([CCode (type = "char*")] string graph_name, GraphKind kind);
+		   RHS:
+		   disc is some sort of Discipline method, Agdisc_t; gv.cpp just uses 0 though
+		 */
+		public Graph ([CCode (type = "char*")] string graph_name, Desc desc, int disc = 0);
+		   
 
 		[CCode (cname = "agread")]
 		public static Graph read (GLib.FileStream file);
@@ -120,10 +151,15 @@
 		public static Graph read_string (string str);
 
 		[CCode (cname = "agnode")]
-		public Node create_node ([CCode (type = "char*")] string node_name);
+		/* public Node create_node ([CCode (type = "char*")] string node_name);
+		   RHS: create_node now wants some sort of createflag */ 
+		public Node create_node ([CCode (type = "char*")] string node_name, int createflag = 0);
 
 		[CCode (cname = "agedge")]
-		public Edge create_edge (Node from, Node to);
+		/* public Edge create_edge (Node from, Node to);
+		   RHS: extern Agedge_t *agedge(Agraph_t * g, Agnode_t * t, Agnode_t * h, char *name, int createflag);
+		*/
+		public Edge create_edge (Node from, Node to, string? name = null, int createflag = 0);
 
 		[CCode (cname = "agsubg")]
 		public unowned Graph create_subgraph ([CCode (type = "char*")] string? name);
