diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi
index b19118e..2ad4ae5 100644
--- a/vapi/glib-2.0.vapi
+++ b/vapi/glib-2.0.vapi
@@ -1347,6 +1347,7 @@ namespace GLib {
 		public void @lock ();
 		public bool trylock ();
 		public void unlock ();
+		public void free ();
 	}
 
 	[CCode (destroy_function = "g_static_rec_mutex_free")]
@@ -1392,6 +1393,7 @@ namespace GLib {
 		public void broadcast ();
 		public void wait (Mutex mutex);
 		public bool timed_wait (Mutex mutex, TimeVal abs_time);
+		public void free ();
 	}
 	
 	/* Thread Pools */
@@ -1412,6 +1414,7 @@ namespace GLib {
 		public void set_sort_function (CompareDataFunc func);
 		public static void set_max_idle_time (uint interval);
 		public static uint get_max_idle_time ();
+		public void free ();
 	}
 	
 	/* Asynchronous Queues */
@@ -1579,6 +1582,7 @@ namespace GLib {
 		public Error (Quark domain, int code, string format, ...);
 		public Error copy ();
 		public bool matches (Quark domain, int code);
+		public void free ();
 
 		public Quark domain;
 		public int code;
@@ -1739,6 +1743,7 @@ namespace GLib {
 		public static string compute_for_data (ChecksumType checksum_type, uchar[] data);
 		[CCode (cname = "g_compute_checksum_for_string")]
 		public static string compute_for_string (ChecksumType checksum_type, string str, size_t length = -1);
+		public void free ();
 	}
 
 	/* Date and Time Functions */
@@ -1929,6 +1934,7 @@ namespace GLib {
 		[CCode (cname = "g_rand_double")]
 		public double next_double ();
 		public double double_range (double begin, double end);
+		public void free ();
 	}
 	
 	namespace Random {
@@ -2076,6 +2082,7 @@ namespace GLib {
 		[PrintfFormat]
 		public void error (string format, ...);
 		public void unexp_token (TokenType expected_token, string? identifier_spec, string? symbol_spec, string? symbol_name, string? message, bool is_error);
+		public void destroy ();
 	}
 
 	public struct ScannerConfig {
@@ -2202,6 +2209,7 @@ namespace GLib {
 		public void clear_items ();
 		public weak List<void*> complete (string prefix, out string? new_prefix = null);
 		public weak List<void*> complete_utf8 (string prefix, out string? new_prefix = null);
+		public void free ();
 	}
 
 	[CCode (has_target = false)]
@@ -2220,6 +2228,7 @@ namespace GLib {
 		public void @continue ();
 		public double elapsed (out ulong microseconds = null);
 		public void reset ();
+		public void destroy ();
 	}
 
 	/* Spawning Processes */
@@ -2397,6 +2406,8 @@ namespace GLib {
 		public int error ();
 		[CCode (cname = "clearerr")]
 		public void clearerr ();
+		[CCode (cname = "fclose")]
+		public void close ();
 	}
 
 	[CCode (lower_case_cprefix = "g_file_", cheader_filename = "glib/gstdio.h")]
@@ -2432,6 +2443,7 @@ namespace GLib {
 		public static Dir open (string filename, uint _flags = 0) throws FileError;
 		public weak string read_name ();
 		public void rewind ();
+		public void close ();
 	}
 	
 	namespace DirUtils {
@@ -2523,6 +2535,7 @@ namespace GLib {
 		public void add_group (owned OptionGroup group);
 		public void set_main_group (owned OptionGroup group);
 		public weak OptionGroup get_main_group ();
+		public void free ();
 	}
 
 	public delegate weak string TranslateFunc (string str);
@@ -2573,6 +2586,7 @@ namespace GLib {
 		public void set_error_hook (OptionErrorFunc error_func);
 		public void set_translate_func (TranslateFunc func, DestroyNotify? destroy_notify);
 		public void set_translation_domain (string domain);
+		public void free ();
 	}
 
 	[CCode (has_target = false)]
@@ -2665,6 +2679,7 @@ namespace GLib {
 		public bool fetch_named_pos (string name, out int start_pos, out int end_pos);
 		[CCode (array_length = false, array_null_terminated = true)]
 		public string[] fetch_all ();
+		public void free ();
 	}
 
 	/* Simple XML Subset Parser */
@@ -2692,6 +2707,7 @@ namespace GLib {
 		public weak string get_element ();
 		public weak SList<string> get_element_stack ();
 		public void get_position (out int line_number, out int char_number);
+		public void free ();
 	}
 	
 	public delegate void MarkupParserStartElementFunc (MarkupParseContext context, string element_name, [CCode (array_length = false, array_null_terminated = true)] string[] attribute_names, [CCode (array_length = false, array_null_terminated = true)] string[] attribute_values) throws MarkupError;
@@ -2778,6 +2794,7 @@ namespace GLib {
 		public void remove_group (string group_name) throws KeyFileError;
 		public void remove_key (string group_name, string key) throws KeyFileError;
 		public void remove_comment (string group_name, string key) throws KeyFileError;
+		public void free ();
 	}
 	
 	[CCode (cprefix = "G_KEY_FILE_", has_type_id = false)]
@@ -2830,6 +2847,7 @@ namespace GLib {
 		public bool remove_application (string uri, string name) throws BookmarkFileError;
 		public bool remove_item (string uri) throws BookmarkFileError;
 		public bool move_item (string old_uri, string new_uri) throws BookmarkFileError;
+		public void free ();
 	}
 
 	public errordomain BookmarkFileError {
@@ -2951,6 +2969,7 @@ namespace GLib {
 		[ReturnsModifiedPointer ()]
 		public void concat (owned List<G> list2);
 		public void @foreach (Func func);
+		public void free ();
 
 		public weak List<G> first ();
 		public weak List<G> last ();
@@ -2991,6 +3010,7 @@ namespace GLib {
 		public void delete_link (SList<G> link_);
 		[ReturnsModifiedPointer ()]
 		public void remove_all (G data);
+		public void free ();
 
 		public uint length ();
 		public SList<weak G> copy ();
@@ -3061,6 +3081,7 @@ namespace GLib {
 		public void insert_before (List<G> sibling, owned G data);
 		public void insert_after (List<G> sibling, owned G data);
 		public void insert_sorted (List<G> sibling, owned G data, CompareDataFunc func, void* user_data);
+		public void free ();
 	}
 
 	/* Sequences */
@@ -3094,6 +3115,7 @@ namespace GLib {
 		public static weak G get (SequenceIter<G> iter);
 		public static void set (SequenceIter<G> iter, owned G data);
 		public static SequenceIter<G> range_get_midpoint (SequenceIter<G> begin, SequenceIter<G> end);
+		public void free ();
 	}
 
 	[Compact]
@@ -3183,6 +3205,7 @@ namespace GLib {
 		public weak StringBuilder insert (long pos, string val);
 		public weak StringBuilder erase (long pos, long len);
 		public weak StringBuilder truncate (size_t len);
+		public void free ();
 
 		[PrintfFormat]
 		public void printf (string format, ...);
@@ -3204,6 +3227,7 @@ namespace GLib {
 		public weak string insert_const (string str);
 		public weak string insert_len (string str, ssize_t len);
 		public void clear ();
+		public void free ();
 	}
 
 	/* Pointer Arrays */
@@ -3222,6 +3246,7 @@ namespace GLib {
 		public void sort (CompareFunc compare_func);
 		public void sort_with_data (CompareDataFunc compare_func);
 		public void set_size (uint length);
+		public void free ();
 
 		public uint len;
 		public void** pdata;
@@ -3243,6 +3268,7 @@ namespace GLib {
 		public void sort (CompareFunc compare_func);
 		public void sort_with_data (CompareDataFunc compare_func);
 		public void set_size (uint length);
+		public void free ();
 
 		public uint len;
 		public uint8[] data;
@@ -3253,6 +3279,7 @@ namespace GLib {
 	[Compact]
 	[CCode (free_function = "g_node_destroy")]
 	public class Node<G> {
+		public void destroy ();
 		public G data;
 		public Node next;
 		public Node prev;
@@ -3342,6 +3369,7 @@ namespace GLib {
 		public weak V search (CompareFunc search_func, void* user_data);
 		public bool remove (K key);
 		public bool steal (K key);
+		public void destroy ();
 	}
 	
 	/* Internationalization */
