Update to use the amazing GObject Introspection