diff --git a/vapi/clutter-1.0.vapi b/vapi/clutter-1.0.vapi
index 660ae9b..19e21b4 100644
--- a/vapi/clutter-1.0.vapi
+++ b/vapi/clutter-1.0.vapi
@@ -1,25 +1,19 @@
-/* clutter-1.0.vapi generated by vapigen, do not modify. */
-
 [CCode (cprefix = "Clutter", lower_case_cprefix = "clutter_")]
 namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Actor : GLib.InitiallyUnowned, Clutter.Scriptable {
-		public uint32 flags;
-		public weak GLib.InitiallyUnowned parent_instance;
-		public Clutter.ActorPrivate priv;
-		public uint32 private_flags;
-		public virtual void allocate (Clutter.ActorBox box, Clutter.AllocationFlags flags);
-		public void allocate_available_size (float x, float y, float available_width, float available_height, Clutter.AllocationFlags flags);
-		public void allocate_preferred_size (Clutter.AllocationFlags flags);
+		public virtual void allocate (Clutter.ActorBox box, Clutter.AllocationFlags flags = 0);
+		public void allocate_available_size (float x, float y, float available_width = -1, float available_height = -1, Clutter.AllocationFlags flags = 0);
+		public void allocate_preferred_size (Clutter.AllocationFlags flags = 0);
 		public unowned Clutter.Animation animate (ulong mode, uint duration, string first_property_name, ...);
 		public unowned Clutter.Animation animate_with_alpha (Clutter.Alpha alpha, string first_property_name, ...);
-		public unowned Clutter.Animation animate_with_alphav (Clutter.Alpha alpha, [CCode (array_length_pos = 0)] string[] properties, [CCode (array_length = false)] GLib.Value[] values);
+		public unowned Clutter.Animation animate_with_alphav (Clutter.Alpha alpha, [CCode (array_length_pos = 1.5)] string[] properties, [CCode (array_length_pos = 1.5)] GLib.Value[] values);
 		public unowned Clutter.Animation animate_with_timeline (ulong mode, Clutter.Timeline timeline, string first_property_name, ...);
-		public unowned Clutter.Animation animate_with_timelinev (ulong mode, Clutter.Timeline timeline, [CCode (array_length_pos = 0)] string[] properties, [CCode (array_length = false)] GLib.Value[] values);
-		public unowned Clutter.Animation animatev (ulong mode, uint duration, [CCode (array_length_pos = 0)] string[] properties, [CCode (array_length = false)] GLib.Value[] values);
-		public void apply_relative_transform_to_point (Clutter.Actor? ancestor, Clutter.Vertex point, Clutter.Vertex vertex);
+		public unowned Clutter.Animation animate_with_timelinev (ulong mode, Clutter.Timeline timeline, [CCode (array_length_pos = 2.5)] string[] properties, [CCode (array_length_pos = 2.5)] GLib.Value[] values);
+		public unowned Clutter.Animation animatev (ulong mode, uint duration, [CCode (array_length_pos = 2.5)] string[] properties, [CCode (array_length_pos = 2.5)]  GLib.Value[] values);
+		public void apply_relative_transform_to_point (Clutter.Actor? ancestor, Clutter.Vertex point, out Clutter.Vertex vertex);
 		public virtual void apply_transform (Cogl.Matrix matrix);
-		public void apply_transform_to_point (Clutter.Vertex point, Clutter.Vertex vertex);
+		public void apply_transform_to_point (Clutter.Vertex point, out Clutter.Vertex vertex);
 		public Pango.Context create_pango_context ();
 		public Pango.Layout create_pango_layout (string? text);
 		public void get_abs_allocation_vertices ([CCode (array_length = false)] out Clutter.Vertex[] verts);
@@ -109,45 +103,79 @@ namespace Clutter {
 		public virtual void unmap ();
 		public void unparent ();
 		public void unset_flags (Clutter.ActorFlags flags);
+		[NoAccessorMethod]
 		public Clutter.ActorBox allocation { get; }
+		[NoAccessorMethod]
 		public Clutter.Gravity anchor_gravity { get; set; }
+		[NoAccessorMethod]
 		public float anchor_x { get; set; }
+		[NoAccessorMethod]
 		public float anchor_y { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Geometry clip { get; set; }
+		[NoAccessorMethod]
 		public bool clip_to_allocation { get; set; }
 		public float depth { get; set; }
 		public bool fixed_position_set { get; set; }
+		[NoAccessorMethod]
 		public float fixed_x { get; set; }
+		[NoAccessorMethod]
 		public float fixed_y { get; set; }
+		[NoAccessorMethod]
 		public bool has_clip { get; }
 		public float height { get; set; }
+		[NoAccessorMethod]
 		public bool mapped { get; }
+		[NoAccessorMethod]
 		public float min_height { get; set; }
+		[NoAccessorMethod]
 		public bool min_height_set { get; set; }
+		[NoAccessorMethod]
 		public float min_width { get; set; }
+		[NoAccessorMethod]
 		public bool min_width_set { get; set; }
 		public string name { get; set; }
+		[NoAccessorMethod]
 		public float natural_height { get; set; }
+		[NoAccessorMethod]
 		public bool natural_height_set { get; set; }
+		[NoAccessorMethod]
 		public float natural_width { get; set; }
+		[NoAccessorMethod]
 		public bool natural_width_set { get; set; }
 		public uint8 opacity { get; set; }
 		public bool reactive { get; set; }
+		[NoAccessorMethod]
 		public bool realized { get; }
+		[NoAccessorMethod]
 		public Clutter.RequestMode request_mode { get; set; }
+		[NoAccessorMethod]
 		public double rotation_angle_x { get; set; }
+		[NoAccessorMethod]
 		public double rotation_angle_y { get; set; }
+		[NoAccessorMethod]
 		public double rotation_angle_z { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Vertex rotation_center_x { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Vertex rotation_center_y { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Vertex rotation_center_z { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Gravity rotation_center_z_gravity { get; set; }
+		[NoAccessorMethod]
 		public float scale_center_x { get; set; }
+		[NoAccessorMethod]
 		public float scale_center_y { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Gravity scale_gravity { get; set; }
+		[NoAccessorMethod]
 		public double scale_x { get; set; }
+		[NoAccessorMethod]
 		public double scale_y { get; set; }
+		[NoAccessorMethod]
 		public bool show_on_set_parent { get; set; }
+		[NoAccessorMethod]
 		public bool visible { get; set; }
 		public float width { get; set; }
 		public float x { get; set; }
@@ -185,8 +213,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Alpha : GLib.InitiallyUnowned {
-		public weak GLib.InitiallyUnowned parent;
-		public Clutter.AlphaPrivate priv;
 		[CCode (has_construct_function = false)]
 		public Alpha.full (Clutter.Timeline timeline, ulong mode);
 		public double get_alpha ();
@@ -195,21 +221,19 @@ namespace Clutter {
 		[CCode (has_construct_function = false)]
 		public Alpha ();
 		public static ulong register_closure (GLib.Closure closure);
-		public static ulong register_func ([CCode (delegate_target_pos = 0)] Clutter.AlphaFunc func);
+		public static ulong register_func (Clutter.AlphaFunc func);
 		public void set_closure (GLib.Closure closure);
-		public void set_func ([CCode (delegate_target_pos = 0)] Clutter.AlphaFunc func);
+		public void set_func (owned Clutter.AlphaFunc func);
 		public void set_mode (ulong mode);
 		public void set_timeline (Clutter.Timeline timeline);
 		[CCode (has_construct_function = false)]
-		public Alpha.with_func (Clutter.Timeline timeline, Clutter.AlphaFunc func, void* data, GLib.DestroyNotify destroy);
+		public Alpha.with_func (Clutter.Timeline timeline, owned Clutter.AlphaFunc func);
 		public double alpha { get; }
 		public ulong mode { get; set construct; }
 		public Clutter.Timeline timeline { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Animation : GLib.Object {
-		public weak GLib.Object parent_instance;
-		public Clutter.AnimationPrivate priv;
 		public unowned Clutter.Animation bind (string property_name, GLib.Value final);
 		public unowned Clutter.Animation bind_interval (string property_name, owned Clutter.Interval interval);
 		public unowned Clutter.Alpha get_alpha ();
@@ -242,8 +266,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Backend : GLib.Object {
-		public weak GLib.Object parent_instance;
-		public Clutter.BackendPrivate priv;
 		public virtual void add_options (GLib.OptionGroup group);
 		public virtual bool create_context (bool is_offscreen) throws GLib.Error;
 		public virtual Clutter.Actor create_stage (Clutter.Stage wrapper) throws GLib.Error;
@@ -269,12 +291,10 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Behaviour : GLib.Object {
-		public weak GLib.Object parent;
-		public Clutter.BehaviourPrivate priv;
-		public void actors_foreach ([CCode (delegate_target_pos = 0)] Clutter.BehaviourForeachFunc func);
+		public void actors_foreach (Clutter.BehaviourForeachFunc func);
 		public virtual void alpha_notify (double alpha_value);
 		public void apply (Clutter.Actor actor);
-		public unowned GLib.SList get_actors ();
+		public unowned GLib.SList<Clutter.Actor> get_actors ();
 		public unowned Clutter.Alpha get_alpha ();
 		public int get_n_actors ();
 		public unowned Clutter.Actor get_nth_actor (int index_);
@@ -288,19 +308,17 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourDepth : Clutter.Behaviour {
-		public weak Clutter.Behaviour parent_instance;
-		public Clutter.BehaviourDepthPrivate priv;
 		public void get_bounds (out int depth_start, out int depth_end);
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
 		public BehaviourDepth (Clutter.Alpha alpha, int depth_start, int depth_end);
 		public void set_bounds (int depth_start, int depth_end);
+		[NoAccessorMethod]
 		public int depth_end { get; set; }
+		[NoAccessorMethod]
 		public int depth_start { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourEllipse : Clutter.Behaviour {
-		public weak Clutter.Behaviour parent_instance;
-		public Clutter.BehaviourEllipsePrivate priv;
 		public double get_angle_end ();
 		public double get_angle_start ();
 		public double get_angle_tilt (Clutter.RotateAxis axis);
@@ -321,9 +339,13 @@ namespace Clutter {
 		public void set_width (int width);
 		public double angle_end { get; set; }
 		public double angle_start { get; set; }
+		[NoAccessorMethod]
 		public double angle_tilt_x { get; set; }
+		[NoAccessorMethod]
 		public double angle_tilt_y { get; set; }
+		[NoAccessorMethod]
 		public double angle_tilt_z { get; set; }
+		[NoAccessorMethod]
 		public Clutter.Knot center { get; set; }
 		public Clutter.RotateDirection direction { get; set; }
 		public int height { get; set; }
@@ -331,19 +353,17 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourOpacity : Clutter.Behaviour {
-		public weak Clutter.Behaviour parent;
-		public Clutter.BehaviourOpacityPrivate priv;
-		public void get_bounds ([CCode (array_length = false)] uint8[] opacity_start, [CCode (array_length = false)] uint8[] opacity_end);
+		public void get_bounds (out uint8 opacity_start, out uint8 opacity_end);
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
 		public BehaviourOpacity (Clutter.Alpha alpha, uint8 opacity_start, uint8 opacity_end);
 		public void set_bounds (uint8 opacity_start, uint8 opacity_end);
+		[NoAccessorMethod]
 		public uint opacity_end { get; set; }
+		[NoAccessorMethod]
 		public uint opacity_start { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourPath : Clutter.Behaviour, Clutter.Scriptable {
-		public weak Clutter.Behaviour parent;
-		public Clutter.BehaviourPathPrivate priv;
 		public unowned Clutter.Path get_path ();
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
 		public BehaviourPath (Clutter.Alpha alpha, Clutter.Path path);
@@ -351,14 +371,12 @@ namespace Clutter {
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
 		public BehaviourPath.with_description (Clutter.Alpha alpha, string desc);
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
-		public BehaviourPath.with_knots (Clutter.Alpha alpha, Clutter.Knot knots, uint n_knots);
+		public BehaviourPath.with_knots (Clutter.Alpha alpha, Clutter.Knot[] knots);
 		public Clutter.Path path { get; set; }
 		public virtual signal void knot_reached (uint knot_num);
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourRotate : Clutter.Behaviour {
-		public weak Clutter.Behaviour parent_instance;
-		public Clutter.BehaviourRotatePrivate priv;
 		public Clutter.RotateAxis get_axis ();
 		public void get_bounds (out double angle_start, out double angle_end);
 		public void get_center (out int x, out int y, out int z);
@@ -369,25 +387,32 @@ namespace Clutter {
 		public void set_bounds (double angle_start, double angle_end);
 		public void set_center (int x, int y, int z);
 		public void set_direction (Clutter.RotateDirection direction);
+		[NoAccessorMethod]
 		public double angle_end { get; set; }
+		[NoAccessorMethod]
 		public double angle_start { get; set; }
 		public Clutter.RotateAxis axis { get; set; }
+		[NoAccessorMethod]
 		public int center_x { get; set; }
+		[NoAccessorMethod]
 		public int center_y { get; set; }
+		[NoAccessorMethod]
 		public int center_z { get; set; }
 		public Clutter.RotateDirection direction { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class BehaviourScale : Clutter.Behaviour {
-		public weak Clutter.Behaviour parent_instance;
-		public Clutter.BehaviourScalePrivate priv;
 		public void get_bounds (out double x_scale_start, out double y_scale_start, out double x_scale_end, out double y_scale_end);
 		[CCode (type = "ClutterBehaviour*", has_construct_function = false)]
 		public BehaviourScale (Clutter.Alpha alpha, double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
 		public void set_bounds (double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
+		[NoAccessorMethod]
 		public double x_scale_end { get; set; }
+		[NoAccessorMethod]
 		public double x_scale_start { get; set; }
+		[NoAccessorMethod]
 		public double y_scale_end { get; set; }
+		[NoAccessorMethod]
 		public double y_scale_start { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -397,33 +422,33 @@ namespace Clutter {
 		public static unowned Clutter.BindingPool find (string name);
 		public unowned string find_action (uint key_val, Clutter.ModifierType modifiers);
 		public static unowned Clutter.BindingPool get_for_class (void* klass);
-		public void install_action (string action_name, uint key_val, Clutter.ModifierType modifiers, GLib.Callback callback, void* data, GLib.DestroyNotify notify);
+		public void install_action (string action_name, uint key_val, Clutter.ModifierType modifiers, owned GLib.Callback callback);
 		public void install_closure (string action_name, uint key_val, Clutter.ModifierType modifiers, GLib.Closure closure);
 		[CCode (has_construct_function = false)]
 		public BindingPool (string name);
-		public void override_action (uint key_val, Clutter.ModifierType modifiers, GLib.Callback callback, void* data, GLib.DestroyNotify notify);
+		public void override_action (uint key_val, Clutter.ModifierType modifiers, owned GLib.Callback callback);
 		public void override_closure (uint key_val, Clutter.ModifierType modifiers, GLib.Closure closure);
 		public void remove_action (uint key_val, Clutter.ModifierType modifiers);
 		public void unblock_action (string action_name);
+		[NoAccessorMethod]
 		public string name { get; construct; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class CairoTexture : Clutter.Texture, Clutter.Scriptable {
-		public weak Clutter.Texture parent_instance;
-		public Clutter.CairoTexturePrivate priv;
 		public void clear ();
 		public Cairo.Context create ();
-		public Cairo.Context create_region (int x_offset, int y_offset, int width, int height);
+		public Cairo.Context create_region (int x_offset, int y_offset, int width = -1, int height = -1);
 		public void get_surface_size (out uint width, out uint height);
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
 		public CairoTexture (uint width, uint height);
 		public void set_surface_size (uint width, uint height);
+		[NoAccessorMethod]
 		public uint surface_height { get; set; }
+		[NoAccessorMethod]
 		public uint surface_width { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class ChildMeta : GLib.Object {
-		public weak GLib.Object parent_instance;
 		public unowned Clutter.Actor get_actor ();
 		public unowned Clutter.Container get_container ();
 		public Clutter.Actor actor { get; construct; }
@@ -431,8 +456,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Clone : Clutter.Actor, Clutter.Scriptable {
-		public weak Clutter.Actor parent_instance;
-		public Clutter.ClonePrivate priv;
 		public unowned Clutter.Actor get_source ();
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
 		public Clone (Clutter.Actor source);
@@ -441,8 +464,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Group : Clutter.Actor, Clutter.Container, Clutter.Scriptable {
-		public weak Clutter.Actor parent_instance;
-		public Clutter.GroupPrivate priv;
 		public int get_n_children ();
 		public unowned Clutter.Actor get_nth_child (int index_);
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
@@ -451,12 +472,10 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Interval : GLib.InitiallyUnowned {
-		public weak GLib.InitiallyUnowned parent_instance;
-		public Clutter.IntervalPrivate priv;
 		public Clutter.Interval clone ();
-		public virtual bool compute_value (double factor, GLib.Value value);
-		public void get_final_value (GLib.Value value);
-		public void get_initial_value (GLib.Value value);
+		public virtual bool compute_value (double factor, out GLib.Value value);
+		public void get_final_value (out GLib.Value value);
+		public void get_initial_value (out GLib.Value value);
 		public void get_interval (...);
 		public GLib.Type get_value_type ();
 		[CCode (has_construct_function = false)]
@@ -474,22 +493,18 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class ListModel : Clutter.Model {
-		public weak Clutter.Model parent_instance;
-		public Clutter.ListModelPrivate priv;
 		[CCode (type = "ClutterModel*", has_construct_function = false)]
 		public ListModel (uint n_columns, ...);
 		[CCode (type = "ClutterModel*", has_construct_function = false)]
-		public ListModel.newv (uint n_columns, out GLib.Type types, string names);
+		public ListModel.newv ([CCode (array_length_pos = 0.5)] GLib.Type[] types, [CCode (array_length_pos = 0.5)] string[] names);
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Model : GLib.Object {
-		public weak GLib.Object parent_instance;
-		public Clutter.ModelPrivate priv;
 		public void append (...);
 		public void appendv ([CCode (array_length_pos = 0.5)] uint[] columns, [CCode (array_length_pos = 0.5)] GLib.Value[] values);
 		public bool filter_iter (Clutter.ModelIter iter);
 		public bool filter_row (uint row);
-		public void @foreach ([CCode (delegate_target_pos = 0)] Clutter.ModelForeachFunc func);
+		public void @foreach (Clutter.ModelForeachFunc func);
 		public virtual unowned string get_column_name (uint column);
 		public virtual GLib.Type get_column_type (uint column);
 		public bool get_filter_set ();
@@ -502,15 +517,15 @@ namespace Clutter {
 		public void insert (uint row, ...);
 		public virtual Clutter.ModelIter insert_row (int index_);
 		public void insert_value (uint row, uint column, GLib.Value value);
-		public void insertv (uint row, [CCode (array_length_pos = 0)] uint[] columns, [CCode (array_length_pos = 0)] GLib.Value[] values);
+		public void insertv (uint row, [CCode (array_length_pos = 1.5)] uint[] columns, [CCode (array_length_pos = 1.5)] GLib.Value[] values);
 		public void prepend (...);
 		public void prependv ([CCode (array_length_pos = 0.5)] uint[] columns, [CCode (array_length_pos = 0.5)] GLib.Value[] values);
 		public void remove (uint row);
 		public virtual void remove_row (uint row);
-		public virtual void resort (Clutter.ModelSortFunc func, void* data);
-		public void set_filter ([CCode (delegate_target_pos = 0)] Clutter.ModelFilterFunc func);
-		public void set_names ([CCode (array_length_pos = 0.5)] int8[] names);
-		public void set_sort (uint column, [CCode (delegate_target_pos = 0)] Clutter.ModelSortFunc func);
+		public virtual void resort ();
+		public void set_filter (owned Clutter.ModelFilterFunc func);
+		public void set_names ([CCode (array_length_pos = 0.5)] string[] names);
+		public void set_sort (uint column, owned Clutter.ModelSortFunc func);
 		public void set_sorting_column (int column);
 		public void set_types ([CCode (array_length_pos = 0.5)] GLib.Type[] types);
 		public bool filter_set { get; }
@@ -522,26 +537,24 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class ModelIter : GLib.Object {
-		public weak GLib.Object parent_instance;
-		public Clutter.ModelIterPrivate priv;
 		public virtual Clutter.ModelIter copy ();
 		public void @get (...);
 		public virtual Clutter.Model get_model ();
 		public virtual uint get_row ();
-		public virtual void get_value (uint column, GLib.Value value);
+		public virtual void get_value (uint column, out GLib.Value value);
 		public virtual bool is_first ();
 		public virtual bool is_last ();
 		public virtual Clutter.ModelIter next ();
 		public virtual Clutter.ModelIter prev ();
 		public void @set (...);
 		public virtual void set_value (uint column, GLib.Value value);
+		[NoAccessorMethod]
 		public Clutter.Model model { get; set; }
+		[NoAccessorMethod]
 		public uint row { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Path : GLib.InitiallyUnowned {
-		public weak GLib.InitiallyUnowned parent;
-		public Clutter.PathPrivate priv;
 		public void add_cairo_path (Cairo.Path cpath);
 		public void add_close ();
 		public void add_curve_to (int x_1, int y_1, int x_2, int y_2, int x_3, int y_3);
@@ -553,13 +566,13 @@ namespace Clutter {
 		public void add_rel_move_to (int x, int y);
 		public bool add_string (string str);
 		public void clear ();
-		public void @foreach ([CCode (delegate_target_pos = 0)] Clutter.PathCallback callback);
+		public void @foreach (Clutter.PathCallback callback);
 		public string get_description ();
 		public uint get_length ();
 		public uint get_n_nodes ();
-		public void get_node (uint index_, Clutter.PathNode node);
-		public unowned GLib.SList get_nodes ();
-		public uint get_position (double progress, Clutter.Knot position);
+		public void get_node (uint index_, out Clutter.PathNode node);
+		public unowned GLib.SList<Clutter.PathNode> get_nodes ();
+		public uint get_position (double progress, out Clutter.Knot position);
 		public void insert_node (int index_, Clutter.PathNode node);
 		[CCode (has_construct_function = false)]
 		public Path ();
@@ -574,11 +587,9 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Rectangle : Clutter.Actor, Clutter.Scriptable {
-		public weak Clutter.Actor parent;
-		public Clutter.RectanglePrivate priv;
-		public void get_border_color (Clutter.Color color);
+		public void get_border_color (out Clutter.Color color);
 		public uint get_border_width ();
-		public void get_color (Clutter.Color color);
+		public void get_color (out Clutter.Color color);
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
 		public Rectangle ();
 		public void set_border_color (Clutter.Color color);
@@ -589,18 +600,17 @@ namespace Clutter {
 		public Clutter.Color border_color { get; set; }
 		public uint border_width { get; set; }
 		public Clutter.Color color { get; set; }
+		[NoAccessorMethod]
 		public bool has_border { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Score : GLib.Object {
-		public weak GLib.Object parent;
-		public Clutter.ScorePrivate priv;
 		public ulong append (Clutter.Timeline parent, Clutter.Timeline timeline);
 		public ulong append_at_marker (Clutter.Timeline parent, string marker_name, Clutter.Timeline timeline);
 		public bool get_loop ();
 		public unowned Clutter.Timeline get_timeline (ulong id);
 		public bool is_playing ();
-		public unowned GLib.SList list_timelines ();
+		public unowned GLib.SList<Clutter.Timeline> list_timelines ();
 		[CCode (has_construct_function = false)]
 		public Score ();
 		public void pause ();
@@ -619,29 +629,27 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Script : GLib.Object {
-		public weak GLib.Object parent_instance;
-		public Clutter.ScriptPrivate priv;
-		public void add_search_paths (string paths, size_t n_paths);
+		public void add_search_paths ([CCode (array_length_type = "gsize")] string[] paths);
 		public void connect_signals (void* user_data);
-		public void connect_signals_full ([CCode (delegate_target_pos = 0)] Clutter.ScriptConnectFunc func);
+		public void connect_signals_full (Clutter.ScriptConnectFunc func);
 		public void ensure_objects ();
 		public unowned GLib.Object get_object (string name);
 		public int get_objects (string first_name, ...);
 		public virtual GLib.Type get_type_from_name (string type_name);
-		public unowned GLib.List list_objects ();
+		public unowned GLib.List<GLib.Object> list_objects ();
 		public uint load_from_data (string data, ssize_t length) throws GLib.Error;
 		public uint load_from_file (string filename) throws GLib.Error;
 		public string lookup_filename (string filename);
 		[CCode (has_construct_function = false)]
 		public Script ();
 		public void unmerge_objects (uint merge_id);
+		[NoAccessorMethod]
 		public string filename { get; }
+		[NoAccessorMethod]
 		public bool filename_set { get; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Shader : GLib.Object {
-		public weak GLib.Object parent;
-		public Clutter.ShaderPrivate priv;
 		public bool compile () throws GLib.Error;
 		public Cogl.Handle get_cogl_fragment_shader ();
 		public Cogl.Handle get_cogl_program ();
@@ -657,26 +665,28 @@ namespace Clutter {
 		public void set_is_enabled (bool enabled);
 		public void set_uniform (string name, GLib.Value value);
 		public void set_vertex_source (string data, ssize_t length);
+		[NoAccessorMethod]
 		public bool compiled { get; }
+		[NoAccessorMethod]
 		public bool enabled { get; set; }
+		[NoAccessorMethod]
 		public string fragment_source { get; set; }
 		public string vertex_source { get; set; }
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Stage : Clutter.Group, Clutter.Container, Clutter.Scriptable {
-		public weak Clutter.Group parent_instance;
-		public Clutter.StagePrivate priv;
 		public void ensure_current ();
 		public void ensure_redraw ();
 		public void ensure_viewport ();
 		public bool event (Clutter.Event event);
 		public unowned Clutter.Actor get_actor_at_pos (Clutter.PickMode pick_mode, int x, int y);
-		public void get_color (Clutter.Color color);
-		public static unowned Clutter.Actor get_default ();
-		public void get_fog (Clutter.Fog fog);
+		public void get_color (out Clutter.Color color);
+		[CCode (type = "ClutterActor*")]
+		public static unowned Clutter.Stage get_default ();
+		public void get_fog (out Clutter.Fog fog);
 		public bool get_fullscreen ();
 		public unowned Clutter.Actor get_key_focus ();
-		public void get_perspective (Clutter.Perspective perspective);
+		public void get_perspective (out Clutter.Perspective perspective);
 		public bool get_throttle_motion_events ();
 		public unowned string get_title ();
 		public bool get_use_fog ();
@@ -686,7 +696,8 @@ namespace Clutter {
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
 		public Stage ();
 		public void queue_redraw ();
-		public uint8[] read_pixels (int x, int y, int width, int height);
+		[CCode (array_length = false)]
+		public uint8[] read_pixels (int x, int y, int width = -1, int height = -1);
 		public void set_color (Clutter.Color color);
 		public void set_fog (Clutter.Fog fog);
 		public void set_fullscreen (bool fullscreen);
@@ -698,9 +709,12 @@ namespace Clutter {
 		public void set_user_resizable (bool resizable);
 		public void show_cursor ();
 		public Clutter.Color color { get; set; }
+		[NoAccessorMethod]
 		public bool cursor_visible { get; set; }
 		public Clutter.Fog fog { get; set; }
+		[NoAccessorMethod]
 		public bool fullscreen_set { get; }
+		[NoAccessorMethod]
 		public bool offscreen { get; set; }
 		public Clutter.Perspective perspective { get; set; }
 		public string title { get; set; }
@@ -715,8 +729,8 @@ namespace Clutter {
 	public class StageManager : GLib.Object {
 		public static unowned Clutter.StageManager get_default ();
 		public unowned Clutter.Stage get_default_stage ();
-		public GLib.SList list_stages ();
-		public unowned GLib.SList peek_stages ();
+		public GLib.SList<Clutter.Stage> list_stages ();
+		public unowned GLib.SList<Clutter.Stage> peek_stages ();
 		public void set_default_stage (Clutter.Stage stage);
 		public Clutter.Stage default_stage { get; set; }
 		public virtual signal void stage_added (Clutter.Stage object);
@@ -724,8 +738,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Text : Clutter.Actor, Clutter.Scriptable {
-		public weak Clutter.Actor parent_instance;
-		public Clutter.TextPrivate priv;
 		public void delete_chars (uint n_chars);
 		public bool delete_selection ();
 		public void delete_text (ssize_t start_pos, ssize_t end_pos);
@@ -734,8 +746,8 @@ namespace Clutter {
 		public bool get_activatable ();
 		public unowned Pango.AttrList get_attributes ();
 		public string get_chars (ssize_t start_pos, ssize_t end_pos);
-		public void get_color (Clutter.Color color);
-		public void get_cursor_color (Clutter.Color color);
+		public void get_color (out Clutter.Color color);
+		public void get_cursor_color (out Clutter.Color color);
 		public int get_cursor_position ();
 		public uint get_cursor_size ();
 		public bool get_cursor_visible ();
@@ -752,7 +764,7 @@ namespace Clutter {
 		public bool get_selectable ();
 		public string get_selection ();
 		public int get_selection_bound ();
-		public void get_selection_color (Clutter.Color color);
+		public void get_selection_color (out Clutter.Color color);
 		public bool get_single_line_mode ();
 		public unowned string get_text ();
 		public bool get_use_markup ();
@@ -791,6 +803,7 @@ namespace Clutter {
 		public Pango.AttrList attributes { get; set; }
 		public Clutter.Color color { get; set; }
 		public Clutter.Color cursor_color { get; set; }
+		[NoAccessorMethod]
 		public bool cursor_color_set { get; }
 		public int cursor_size { get; set; }
 		public bool cursor_visible { get; set; }
@@ -803,10 +816,12 @@ namespace Clutter {
 		public Pango.WrapMode line_wrap_mode { get; set; }
 		public int max_length { get; set; }
 		public uint password_char { get; set; }
+		[NoAccessorMethod]
 		public int position { get; set; }
 		public bool selectable { get; set; }
 		public int selection_bound { get; set; }
 		public Clutter.Color selection_color { get; set; }
+		[NoAccessorMethod]
 		public bool selection_color_set { get; }
 		public bool single_line_mode { get; set; }
 		public string text { get; set; }
@@ -818,8 +833,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Texture : Clutter.Actor, Clutter.Scriptable {
-		public weak Clutter.Actor parent;
-		public Clutter.TexturePrivate priv;
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
 		public Texture.from_actor (Clutter.Actor actor);
 		[CCode (type = "ClutterActor*", has_construct_function = false)]
@@ -851,16 +864,21 @@ namespace Clutter {
 		public void set_sync_size (bool sync_size);
 		public Cogl.Handle cogl_material { get; set; }
 		public Cogl.Handle cogl_texture { get; set; }
+		[NoAccessorMethod]
 		public bool disable_slicing { get; construct; }
+		[NoAccessorMethod]
 		public string filename { set; }
 		public Clutter.TextureQuality filter_quality { get; set construct; }
 		public bool keep_aspect_ratio { get; set; }
 		public bool load_async { set; }
 		public bool load_data_async { set; }
 		public Cogl.PixelFormat pixel_format { get; }
+		[NoAccessorMethod]
 		public bool repeat_x { get; set; }
+		[NoAccessorMethod]
 		public bool repeat_y { get; set; }
 		public bool sync_size { get; set; }
+		[NoAccessorMethod]
 		public int tile_waste { get; }
 		public virtual signal void load_finished (void* error);
 		public virtual signal void pixbuf_change ();
@@ -868,8 +886,6 @@ namespace Clutter {
 	}
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public class Timeline : GLib.Object {
-		public weak GLib.Object parent;
-		public Clutter.TimelinePrivate priv;
 		public void add_marker_at_time (string marker_name, uint msecs);
 		public void advance (uint msecs);
 		public void advance_to_marker (string marker_name);
@@ -884,7 +900,8 @@ namespace Clutter {
 		public double get_progress ();
 		public bool has_marker (string marker_name);
 		public bool is_playing ();
-		public string[] list_markers (int msecs, out size_t n_markers);
+		[CCode (array_null_terminated = true, array_length_type = "gsize")]
+		public string[] list_markers (int msecs);
 		[CCode (has_construct_function = false)]
 		public Timeline (uint msecs);
 		public void pause ();
@@ -916,7 +933,7 @@ namespace Clutter {
 		public abstract void add (Clutter.Actor actor);
 		public void add_actor (Clutter.Actor actor);
 		public void child_get (Clutter.Actor actor, string first_prop, ...);
-		public void child_get_property (Clutter.Actor child, string property, GLib.Value value);
+		public void child_get_property (Clutter.Actor child, string property, out GLib.Value value);
 		public void child_set (Clutter.Actor actor, string first_prop, ...);
 		public void child_set_property (Clutter.Actor child, string property, GLib.Value value);
 		public abstract void create_child_meta (Clutter.Actor actor);
@@ -925,7 +942,7 @@ namespace Clutter {
 		public abstract void @foreach (Clutter.Callback callback);
 		public abstract void foreach_with_internals (Clutter.Callback callback);
 		public abstract Clutter.ChildMeta get_child_meta (Clutter.Actor actor);
-		public unowned GLib.List get_children ();
+		public unowned GLib.List<Clutter.Actor> get_children ();
 		public abstract void lower (Clutter.Actor actor, Clutter.Actor sibling);
 		public void lower_child (Clutter.Actor actor, Clutter.Actor sibling);
 		public abstract void raise (Clutter.Actor actor, Clutter.Actor sibling);
@@ -968,16 +985,14 @@ namespace Clutter {
 		public abstract void set_custom_property (Clutter.Script script, string name, GLib.Value value);
 		public abstract void set_id (string name);
 	}
-	[CCode (type_id = "CLUTTER_TYPE_ACTOR_BOX", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_ACTOR_BOX", cheader_filename = "clutter/clutter.h", dup_function = "clutter_actor_box_copy", free_function = "clutter_actor_box_free")]
 	public struct ActorBox {
 		public float x1;
 		public float y1;
 		public float x2;
 		public float y2;
 		public bool contains (float x, float y);
-		public Clutter.ActorBox copy ();
 		public bool equal (Clutter.ActorBox box_b);
-		public void free ();
 		public void from_vertices ([CCode (array_length = false)] Clutter.Vertex[] verts);
 		public float get_area ();
 		public float get_height ();
@@ -1049,19 +1064,22 @@ namespace Clutter {
 	[CCode (type_id = "CLUTTER_TYPE_CLONE_PRIVATE", cheader_filename = "clutter/clutter.h")]
 	public struct ClonePrivate {
 	}
-	[CCode (type_id = "CLUTTER_TYPE_COLOR", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_COLOR", cheader_filename = "clutter/clutter.h", dup_function = "clutter_color_copy", free_function = "clutter_color_free")]
 	public struct Color {
 		public uint8 red;
 		public uint8 green;
 		public uint8 blue;
 		public uint8 alpha;
 		public void add (Clutter.Color b, out Clutter.Color result);
-		public Clutter.Color copy ();
 		public void darken (out Clutter.Color result);
-		public void free ();
-		public void from_hls (float hue, float luminance, float saturation);
-		public void from_pixel (uint32 pixel);
-		public bool from_string (string str);
+		[CCode (cname = "clutter_color_from_hls")]
+		public Color.from_hls (float hue, float luminance, float saturation);
+		[CCode (cname = "clutter_color_from_pixel")]
+		public Color.from_pixel (uint32 pixel);
+		[CCode (cname = "clutter_color_from_string")]
+		public Color.from_string (string str);
+		[CCode (cname = "clutter_color_from_string")]
+		public bool parse_string (string str);
 		public void lighten (out Clutter.Color result);
 		public void shade (double factor, out Clutter.Color result);
 		public void subtract (Clutter.Color b, out Clutter.Color result);
@@ -1081,7 +1099,7 @@ namespace Clutter {
 		public Clutter.InputDevice device;
 		public weak Clutter.Actor related;
 	}
-	[CCode (type_id = "CLUTTER_TYPE_EVENT", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_EVENT", cheader_filename = "clutter/clutter.h", dup_function = "clutter_event_copy", free_function = "clutter_event_free")]
 	public struct Event {
 		public Clutter.EventType type;
 		public Clutter.AnyEvent any;
@@ -1091,8 +1109,6 @@ namespace Clutter {
 		public Clutter.ScrollEvent scroll;
 		public Clutter.StageStateEvent stage_state;
 		public Clutter.CrossingEvent crossing;
-		public Clutter.Event copy ();
-		public void free ();
 		public uint32 get_button ();
 		public uint get_click_count ();
 		public void get_coords (out float x, out float y);
@@ -1148,13 +1164,11 @@ namespace Clutter {
 		public unichar unicode_value;
 		public Clutter.InputDevice device;
 	}
-	[CCode (type_id = "CLUTTER_TYPE_KNOT", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_KNOT", cheader_filename = "clutter/clutter.h", dup_function = "clutter_knot_copy", free_function = "clutter_knot_free")]
 	public struct Knot {
 		public int x;
 		public int y;
-		public Clutter.Knot copy ();
 		public bool equal (Clutter.Knot knot_b);
-		public void free ();
 	}
 	[CCode (type_id = "CLUTTER_TYPE_LIST_MODEL_PRIVATE", cheader_filename = "clutter/clutter.h")]
 	public struct ListModelPrivate {
@@ -1179,32 +1193,27 @@ namespace Clutter {
 		public Clutter.InputDevice device;
 	}
 	[CCode (type_id = "CLUTTER_TYPE_PARAM_SPEC_COLOR", cheader_filename = "clutter/clutter.h")]
-	public struct ParamSpecColor {
-		public weak GLib.ParamSpec parent_instance;
+	public class ParamSpecColor : GLib.ParamSpec {
 		public Clutter.Color default_value;
 	}
 	[CCode (type_id = "CLUTTER_TYPE_PARAM_SPEC_FIXED", cheader_filename = "clutter/clutter.h")]
-	public struct ParamSpecFixed {
-		public weak GLib.ParamSpec parent_instance;
+	public class ParamSpecFixed : GLib.ParamSpec {
 		public Cogl.Fixed minimum;
 		public Cogl.Fixed maximum;
 		public Cogl.Fixed default_value;
 	}
 	[CCode (type_id = "CLUTTER_TYPE_PARAM_SPEC_UNITS", cheader_filename = "clutter/clutter.h")]
-	public struct ParamSpecUnits {
-		public weak GLib.ParamSpec parent_instance;
+	public class ParamSpecUnits : GLib.ParamSpec {
 		public Clutter.UnitType default_type;
 		public float default_value;
 		public float minimum;
 		public float maximum;
 	}
-	[CCode (type_id = "CLUTTER_TYPE_PATH_NODE", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_PATH_NODE", cheader_filename = "clutter/clutter.h", dup_function = "clutter_path_node_copy", free_function = "clutter_path_node_free")]
 	public struct PathNode {
 		public Clutter.PathNodeType type;
-		public weak Clutter.Knot[] points;
-		public Clutter.PathNode copy ();
+		public weak Clutter.Knot points[3];
 		public bool equal (Clutter.PathNode node_b);
-		public void free ();
 	}
 	[CCode (type_id = "CLUTTER_TYPE_PATH_PRIVATE", cheader_filename = "clutter/clutter.h")]
 	public struct PathPrivate {
@@ -1275,38 +1284,36 @@ namespace Clutter {
 	}
 	[CCode (type_id = "CLUTTER_TYPE_TIMEOUT_POOL", cheader_filename = "clutter/clutter.h")]
 	public struct TimeoutPool {
-		public uint add (uint fps, GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+		public uint add (uint fps, owned GLib.SourceFunc func);
 		public void remove (uint id);
 	}
-	[CCode (type_id = "CLUTTER_TYPE_UNITS", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_UNITS", cheader_filename = "clutter/clutter.h", dup_function = "clutter_units_copy", free_function = "clutter_units_free")]
 	public struct Units {
-		public Clutter.UnitType unit_type;
-		public float value;
-		public float _pixels;
-		public uint pixels_set;
-		public int64 __padding_1;
-		public int64 __padding_2;
-		public Clutter.Units copy ();
-		public void em (float em);
-		public void em_for_font (string font_name, float em);
-		public void free ();
-		public bool from_string (string str);
+		[CCode (cname = "clutter_units_em")]
+		public Units.em (float em);
+		[CCode (cname = "clutter_units_em_for_font")]
+		public Units.em_for_font (string font_name, float em);
+		[CCode (cname = "clutter_units_from_string")]
+		public Units.from_string (string str);
+		[CCode (cname = "clutter_units_from_string")]
+		public bool parse_string (string str);
 		public Clutter.UnitType get_unit_type ();
 		public float get_unit_value ();
-		public void mm (float mm);
-		public void pixels (int px);
-		public void pt (float pt);
+		[CCode (cname = "clutter_units_mm")]
+		public Units.mm (float mm);
+		[CCode (cname = "clutter_units_pixels")]
+		public Units.pixels (int px);
+		[CCode (cname = "clutter_units_pt")]
+		public Units.pt (float pt);
 		public float to_pixels ();
 		public string to_string ();
 	}
-	[CCode (type_id = "CLUTTER_TYPE_VERTEX", cheader_filename = "clutter/clutter.h")]
+	[CCode (type_id = "CLUTTER_TYPE_VERTEX", cheader_filename = "clutter/clutter.h", dup_function = "clutter_vertex_copy", free_function = "clutter_vertex_free")]
 	public struct Vertex {
 		public float x;
 		public float y;
 		public float z;
-		public Clutter.Vertex copy ();
 		public bool equal (Clutter.Vertex vertex_b);
-		public void free ();
 	}
 	[CCode (cprefix = "CLUTTER_ACTOR_FLAGS_", cheader_filename = "clutter/clutter.h")]
 	public enum ActorFlags {
@@ -1574,26 +1581,26 @@ namespace Clutter {
 		MM,
 		POINT
 	}
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate double AlphaFunc (Clutter.Alpha alpha, void* user_data);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate void BehaviourForeachFunc (Clutter.Behaviour behaviour, Clutter.Actor actor, void* data);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate double AlphaFunc (Clutter.Alpha alpha);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate void BehaviourForeachFunc (Clutter.Behaviour behaviour, Clutter.Actor actor);
 	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
 	public delegate bool BindingActionFunc (GLib.Object gobject, string action_name, uint key_val, Clutter.ModifierType modifiers);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate void Callback (Clutter.Actor actor, void* data);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate bool ModelFilterFunc (Clutter.Model model, Clutter.ModelIter iter, void* user_data);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate bool ModelForeachFunc (Clutter.Model model, Clutter.ModelIter iter, void* user_data);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate int ModelSortFunc (Clutter.Model model, GLib.Value a, GLib.Value b, void* user_data);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate void PathCallback (Clutter.PathNode node, void* data);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate void Callback (Clutter.Actor actor);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate bool ModelFilterFunc (Clutter.Model model, Clutter.ModelIter iter);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate bool ModelForeachFunc (Clutter.Model model, Clutter.ModelIter iter);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate int ModelSortFunc (Clutter.Model model, GLib.Value a, GLib.Value b);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate void PathCallback (Clutter.PathNode node);
 	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
 	public delegate bool ProgressFunc (GLib.Value a, GLib.Value b, double progress, GLib.Value retval);
-	[CCode (cheader_filename = "clutter/clutter.h", has_target = false)]
-	public delegate void ScriptConnectFunc (Clutter.Script script, GLib.Object object, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags, void* user_data);
+	[CCode (cheader_filename = "clutter/clutter.h")]
+	public delegate void ScriptConnectFunc (Clutter.Script script, GLib.Object object, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public const int @0;
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5607,7 +5614,7 @@ namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static unowned GLib.ParamSpec container_class_find_child_property (GLib.ObjectClass klass, string property_name);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static unowned GLib.ParamSpec[] container_class_list_child_properties (GLib.ObjectClass klass, out uint n_properties);
+	public static unowned GLib.ParamSpec[] container_class_list_child_properties (GLib.ObjectClass klass);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void do_event (Clutter.Event event);
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5621,9 +5628,9 @@ namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static Clutter.FeatureFlags feature_get_all ();
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint frame_source_add (uint fps, GLib.SourceFunc func, void* data);
+	public static uint frame_source_add (uint fps, GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint frame_source_add_full (int priority, uint fps, GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+	public static uint frame_source_add_full (int priority, uint fps, owned GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static Clutter.Actor get_actor_by_gid (uint32 id);
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5663,9 +5670,9 @@ namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void grab_pointer_for_device (Clutter.Actor actor, int id);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static Clutter.InitError init ([CCode (array_length_pos = 0.5)] out string[]? argv);
+	public static Clutter.InitError init ([CCode (array_length_pos = 0.5)] ref unowned string[]? argv = null);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static Clutter.InitError init_with_args ([CCode (array_length_pos = 0.5)] ref string[]? argv, string? parameter_string, GLib.OptionEntry? entries, string? translation_domain) throws GLib.Error;
+	public static Clutter.InitError init_with_args ([CCode (array_length_pos = 0.5)] ref unowned string[]? argv = null, string? parameter_string = null, [CCode (array_length = false)] GLib.OptionEntry[]? entries = null, string? translation_domain = null) throws GLib.Error;
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static uint32 keysym_to_unicode (uint keyval);
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5689,19 +5696,19 @@ namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void set_motion_events_enabled (bool enable);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_frame_source (uint fps, GLib.SourceFunc func, void* data);
+	public static uint threads_add_frame_source (uint fps, GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_frame_source_full (int priority, uint fps, GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+	public static uint threads_add_frame_source_full (int priority, uint fps, owned GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_idle (GLib.SourceFunc func, void* data);
+	public static uint threads_add_idle (GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_idle_full (int priority, GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+	public static uint threads_add_idle_full (int priority, owned GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_repaint_func (GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+	public static uint threads_add_repaint_func (owned GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_timeout (uint interval, GLib.SourceFunc func, void* data);
+	public static uint threads_add_timeout (uint interval, GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static uint threads_add_timeout_full (int priority, uint interval, GLib.SourceFunc func, void* data, GLib.DestroyNotify notify);
+	public static uint threads_add_timeout_full (int priority, uint interval, owned GLib.SourceFunc func);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void threads_enter ();
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5724,12 +5731,12 @@ namespace Clutter {
 	public static Clutter.Color value_get_color (GLib.Value value);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static Cogl.Fixed value_get_fixed (GLib.Value value);
-	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static float value_get_shader_float (GLib.Value value, out size_t length);
-	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static int value_get_shader_int (GLib.Value value, out size_t length);
-	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static unowned float[] value_get_shader_matrix (GLib.Value value, out size_t length);
+	[CCode (cheader_filename = "clutter/clutter.h", array_length_type = "gsize")]
+	public static unowned float[] value_get_shader_float (GLib.Value value);
+	[CCode (cheader_filename = "clutter/clutter.h", array_length_type = "gsize")]
+	public static unowned int[] value_get_shader_int (GLib.Value value);
+	[CCode (cheader_filename = "clutter/clutter.h", array_length_type = "gsize")]
+	public static unowned float[] value_get_shader_matrix (GLib.Value value);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static Clutter.Units value_get_units (GLib.Value value);
 	[CCode (cheader_filename = "clutter/clutter.h")]
@@ -5737,11 +5744,11 @@ namespace Clutter {
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void value_set_fixed (GLib.Value value, Cogl.Fixed fixed_);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static void value_set_shader_float (GLib.Value value, int size, out float floats);
+	public static void value_set_shader_float (GLib.Value value, [CCode (array_length_pos = 1.9)] float[] floats);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static void value_set_shader_int (GLib.Value value, int size, out int ints);
+	public static void value_set_shader_int (GLib.Value value, [CCode (array_length_pos = 1.9)] int[] ints);
 	[CCode (cheader_filename = "clutter/clutter.h")]
-	public static void value_set_shader_matrix (GLib.Value value, int size, out float matrix);
+	public static void value_set_shader_matrix (GLib.Value value, [CCode (array_length_pos = 1.9)] float[] matrix);
 	[CCode (cheader_filename = "clutter/clutter.h")]
 	public static void value_set_units (GLib.Value value, Clutter.Units units);
 }
