Merge remote-tracking branch 'cros/upstream' into 'cros/master'

Contains the following commits:
42dab8e8 build,test: fix order of included libraries (Aleksander Morgado)
16f40391 cli,modem: avoid using deprecated mm_pco_list_free() (Aleksander Morgado)
5e8c64d0 iface-modem-simple: don't assert ongoing connect cancellable (Aleksander Morgado)
3da82d10 plugin-manager: cancel timeouts when device probing is cancelled (Aleksander Morgado)
76e86259 plugin-manager: fix waiting the minimum probing time (Aleksander Morgado)
d7d2b910 foxconn: new plugin to support the T77W968 (Aleksander Morgado)
5ab5593e uk: update Ukrainian translation (Yuri Chornoivan)
81daaa25 po: update Turkish translation (emintufan)
ad371cec dell,dw5821e: add support for the DW5821e with eSIM variant (Aleksander Morgado)
0c554aec build: post-release version bump to 1.13.0 (Aleksander Morgado)
8c2a6629 release: bump version to 1.12.0 (Aleksander Morgado)
929ed9f9 NEWS: update for 1.12.0 (Aleksander Morgado)
16f90f1e build: require libqmi 1.24.0 (Aleksander Morgado)
41e30cfa AUTHORS: update for 1.12 (Aleksander Morgado)
c9e603a3 telit: add AT$GPSNMUN description (Daniele Palmas)
4a2e907e telit: minor coding style fix (Krzysztof Drobinski)
c79d9450 mm-modem-helpers-telit: fix undefined bitshifts (Eric Caruso)
e0f0d623 telit: fix crash if AT$GPSP=? is supported but no GPS data port (Aleksander Morgado)
5def58d3 telit: minor coding style fixes (Aleksander Morgado)
eb3f17dd telit: Allow enabling GNSS events if NMEA port was detected (Krzysztof Drobinski)
da729943 quectel: Add port type hints for BG96 (Sven Schwermer)
9e63037c quectel: Fix port type hints for EG91 (Sven Schwermer)
b076653e libmm-glib,pco: deprecate mm_pco_list_free() (Aleksander Morgado)
5dd82917 libmm-glib: flag as (skip) all non-API methods (Aleksander Morgado)
037b774b simple-status: deprecate 'subscription state' property (Aleksander Morgado)
651028c2 libmm-glib: remove unused _dup() methods (Aleksander Morgado)
85661953 api,voice: CreateCall() expects only the 'number' property (Aleksander Morgado)
08d23dd6 docs,libmm-glib: provide per-version indices (Aleksander Morgado)
53a7dc2f docs,api: rework how indices are exposed in docs (Aleksander Morgado)
b3252702 libmm-glib,pco: mm_pco_list_add() is not part of the API (Aleksander Morgado)
d09aa385 libmm-glib,location: fix 'unknown' lat/long/alt numeric values (Aleksander Morgado)
f9ea0c1d cli,output: fix truncated array output when == 10 elements (Aleksander Morgado)
1576c7d8 docs,libmm-glib: add missing references to the 'emergency numbers' property methods (Aleksander Morgado)
e5ac843a api,compat: fix warnings during doc build (Aleksander Morgado)
cc7fd0ad docs,api: add missing reference to ID_MM_PORT_TYPE_AUDIO (Aleksander Morgado)
cf14fba5 docs,api: provide per-version indices (Aleksander Morgado)
f3d1d50b introspection,firmware: avoid <term> in <para> (Aleksander Morgado)
866b4e76 introspection,voice: untabify (Aleksander Morgado)
465067f0 introspection,sim: untabify (Aleksander Morgado)
ef30dd80 telit: increase timeout for AT#REBOOT (Krzysztof Drobinski)

Change-Id: I5512aa24aec8318eec9266050ec966c7ee5c8770
diff --git a/AUTHORS b/AUTHORS
index ad19818..06aeb98 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -9,64 +9,132 @@
 Other contributors:
   Ben Chan
   Nathan Williams
+  Carlo Lobrano
+  Daniele Palmas
+  Lubomir Rintel
   Torgny Johansson
+  Marco Bascetta
+  Riccardo Vangelisti
   Alexander Sack
   Guido Günther
   Eric Shienbrood
   Elly Jones
+  Eric Caruso
+  David McCullough
   Prathmesh Prabhu
   Thieu Le
   Thomas Tuttle
   Bjørn Mork
   Marius B. Kotsbak
-  Christian Persch
-  David McCullough
   Michael Biebl
+  Paul Bartell
+  Torsten Hilbrich
+  Alfonso Sánchez-Beato
+  Christian Persch
+  Sven Schwermer
+  Thomas Sailer
+  Bob Ham
   Colin Walters
   Franko Fang
+  Jakub Sitnicki
   Jason Glasgow
   Jeroen Elebaut
+  Matthew Starr
+  Reinhard Speyerer
+  Yunlian Jiang
   Ori Inbar
   David Rochberg
   Jiří Klimeš
+  Krzysztof Drobinski
   Martyn Russell
+  Thomas Haller
+  Tomas Jura
+  Colin Helliwell
   Graham Inggs
+  Javier Viguera
   Lionel Landwerlin
+  Maksim Salau
   Martin Pitt
+  Matthew Stanger
+  Maxim Anisimov
+  Nick Stevens
   Norbert Frese
+  Piotr Drąg
   Thomas Bechtold
   Yegor Yefremov
-  Yunlian Jiang
   Adrian Bunk
+  Alexander Couzens
   Amit Mendapara
   Andrew Bird
   Anton Blanchard
   Arnd Hannemann
+  Arto Jantunen
   Arun Raghavan
+  Baruch Siach
+  Beniamino Galvani
+  Brian Norris
+  Brian, Sam
   Bryan Duff
+  Claude Paroz
   David (Pololu)
   David Castellanos
+  David Herrmann
   David Härdeman
   Dmitry Ivanyushin
+  Enrico Mioso
   Eugene Crosser
   Evan Nemerson
+  Fabrice Bellet
   Fangxiaozhi (Franko)
+  Felix Janda
   Gerald Richter
+  Greg Suarez
+  Iain Lane
+  Jason Simmons
   Jens Seidel
+  Johny Mattsson
   Julian Oes
   Jun Woo Lee
+  Khem Raj
+  Krzysztof Kotlenga
+  Lech Perczak
+  LiuQiFeng
+  Luis A. Lozano
   M. I. Spozta
+  Marc Murphy
   Mario Blättermann
+  Mario Limonciello
+  Mark-Jablonsky
+  Michael Farrell
   Michał Sroczyński
+  Milo Casagrande
+  Mohammed Sadiq
+  Moo
   Nathan J. Williams
   Noel J. Bergman
+  Oskar Enoksson
+  Piotr Figiel
   Quentin.Li
+  Roshan Pius
+  Sam Spilsbury
+  Sławomir Bocheński
+  Tabor Kelly
   Thomas Grenman
+  Thomas Voß
+  Ting-Yuan Huang
   Tom Bechtold
   Tom Goetz
   Tore Anderson
+  Tyler
+  Ulrich Ölmann
+  Valentin Blot
+  Ville Skyttä
   Vincent Untz
   Vitaly Gimly
   Yuri Chornoivan
+  Amol Lad
   kuonirat
-  Matthew Stanger
+  poma
+  scootergrisen
+  wi24rd
+  yparitcher
diff --git a/NEWS b/NEWS
index eaa7b36..b13950f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,110 @@
 
+ModemManager 1.12.0
+-------------------------------------------
+This is a new stable release of ModemManager.
+
+The following notes are directed to package maintainers:
+
+ * This version requires:
+   ** libmbim >= 1.18.0 (for the optional MBIM support)
+   ** libqmi >= 1.24.0 (for the optional QMI support)
+
+ * The build allows to configure with '--with-at-command-via-dbus' in order to
+   unconditionally enable the Modem.Command() method to allow running AT
+   commands through ModemManager. This is not suggested for standard
+   distributions, though.
+
+The most important features and changes in this release are the following:
+
+ * Modem interface:
+   ** Updated logic to avoid assuming that setting bands or modes is immediate,
+      the daemon will now actively monitor for those updates to happen before
+      returning success.
+
+ * 3GPP interface:
+   ** libmm-glib: deprecated the mm_pco_list_free() helper method.
+
+ * Simple interface:
+   ** api,libmm-glib: deprecated the 'subscription state' property.
+
+ * Location interface:
+   ** Fixed 'unknown' lat/long/alt numeric values.
+   ** Added support for MSB A-GPS in addition to MSA A-GPS.
+
+ * Voice interface:
+   ** Improved voice call management with call id detection and tracking.
+   ** Improved detailed call state transitions on generic modems that support
+      call list polling.
+   ** Added support for GSM supplementary services, including call waiting,
+      call transfer, call deflection, multiparty calls...
+   ** Added emergency call support, allowing voice call to emergency numbers
+      even without SIM or with SIM-PIN locked.
+   ** Deprecated all properties except for 'number' in the CreateCall()
+      method.
+
+ * Messaging interface:
+   ** Updated to report SMS timestamps in correct ISO8601 format.
+
+ * Bearer:
+   ** Improved unused CID lookup to allow selecting non-sequential CIDs.
+   ** Disabled all AT protocol based context monitoring when PPP is used for
+      the connection, in order to properly sync with pppd, which should be the
+      one detecting the disconnections (already in 1.10.6).
+
+ * QMI:
+   ** Improved support to list stored firmware images in Sierra devices.
+   ** Added additional lock check retries on 'SIM not inserted' errors.
+   ** Updated explicit registration attempt to report success only when the
+      target requested network is registered.
+   ** Added MSB A-GPS support.
+   ** Implemented automatic carrier configuration selection using PDC service
+      (already in 1.10.2).
+
+ * mmcli:
+   ** New machine-readable JSON output with '--output-json'.
+   ** Updated to allow using the modem UID to specify SIM operations.
+
+ * udev:
+   ** New ID_MM_PORT_TYPE_AUDIO generic udev tag to identify ports that
+      should be used for in-band audio.
+   ** Removed support for the ID_MM_PLATFORM_DRIVER_PROBE udev tag, as it
+      is no longer required given that the more generic explicit whitelist
+      may be used to flag which devices should be probed.
+   ** Renamed ID_MM_DEVICE_MANUAL_SCAN_ONLY to ID_MM_TTY_MANUAL_SCAN_ONLY,
+      given that the tag only applies to TTYs.
+   ** ID_MM_DEVICE_IGNORE is no longer used internally in ModemManager, and
+      is instead targeted to users that want to explicitly ignore specific
+      devices regardless of what filter type is in use (already in 1.10.6).
+
+ * dbus:
+   ** Updated to always report the registered MM_CORE_ERROR_CANCELLED error
+      instead of the implicit G_IO_ERROR_CANCELLED ones generated by GLib.
+
+ * GObject introspection:
+   ** Fixed setup to explicitly skip all non-API methods.
+
+ * Plugins:
+   ** tplink: new plugin.
+   ** dlink: new plugin.
+   ** xmm: added MSB A-GPS support.
+   ** dell,dw5821e: update to allow unmanaged GPS support on the TTY even
+      when raw/NMEA GPS is enabled via QMI/LOC.
+   ** quectel: updated to allow TTY-only devices.
+   ** telit: added GPS support.
+   ** telit: improved band management with #BND.
+   ** simtech: added improved voice call support.
+   ** simtech: added support for LTE devices.
+   ** simtech: improved signal quality reporting logic.
+   ** simtech: added GPS support for the SIM7000/SIM7600 family.
+   ** cinterion: added support for time updates.
+   ** cinterion: added improved voice call support.
+   ** ublox: added improved voice call support.
+   ** ublox: improved band management with UBANDSEL.
+
+All the features and fixes which were backported to 1.10.x releases are also
+present in ModemManager 1.12.0.
+
+
 ModemManager 1.10.0
 -------------------------------------------
 This is a new stable release of ModemManager.
diff --git a/cli/mmcli-modem.c b/cli/mmcli-modem.c
index e6c4a62..32272d8 100644
--- a/cli/mmcli-modem.c
+++ b/cli/mmcli-modem.c
@@ -434,7 +434,7 @@
         mmcli_output_pco_list    (pco_list);
 
         g_free (facility_locks);
-        mm_pco_list_free (pco_list);
+        g_list_free_full (pco_list, g_object_unref);
     }
 
     /* CDMA */
diff --git a/cli/mmcli-output.c b/cli/mmcli-output.c
index 338e658..c72af51 100644
--- a/cli/mmcli-output.c
+++ b/cli/mmcli-output.c
@@ -964,8 +964,10 @@
 
             n = multiple->values ? g_strv_length (multiple->values) : 0;
             if (n > 0) {
+                guint aux = n;
+
                 key_length += ((strlen (KEY_ARRAY_VALUE_SUFFIX)) + 3);
-                if (n > 10)
+                while ((aux /= 10) > 0)
                     key_length++;
             }
         }
diff --git a/configure.ac b/configure.ac
index 667fb9d..07fb86d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 dnl
 
 m4_define([mm_major_version], [1])
-m4_define([mm_minor_version], [11])
+m4_define([mm_minor_version], [13])
 m4_define([mm_micro_version], [0])
 m4_define([mm_version],
           [mm_major_version.mm_minor_version.mm_micro_version])
@@ -18,9 +18,9 @@
 dnl            with old code), increment a.
 dnl        If the interface has changed in an incompatible way (that is,
 dnl            functions have changed or been removed), then zero a.
-m4_define([mm_glib_lt_current],  [4])
+m4_define([mm_glib_lt_current],  [5])
 m4_define([mm_glib_lt_revision], [0])
-m4_define([mm_glib_lt_age],      [4])
+m4_define([mm_glib_lt_age],      [5])
 
 dnl-----------------------------------------------------------------------------
 dnl autoconf, automake, libtool initialization
@@ -362,7 +362,7 @@
 dnl QMI support (enabled by default)
 dnl
 
-LIBQMI_VERSION=1.23.1
+LIBQMI_VERSION=1.25.1
 
 AC_ARG_WITH(qmi, AS_HELP_STRING([--without-qmi], [Build without QMI support]), [], [with_qmi=yes])
 AM_CONDITIONAL(WITH_QMI, test "x$with_qmi" = "xyes")
diff --git a/docs/reference/api/ModemManager-docs.xml b/docs/reference/api/ModemManager-docs.xml
index 2918af6..a83e07e 100644
--- a/docs/reference/api/ModemManager-docs.xml
+++ b/docs/reference/api/ModemManager-docs.xml
@@ -102,13 +102,40 @@
     <xi:include href="xml/mm-compat.xml"/>
   </part>
 
-  <index>
+  <chapter id="api-index-full">
     <title>Index</title>
-  </index>
-
-  <!-- NOT needed in DBus API -->
-  <!--chapter id="mm-hierarchy">
-    <title>Object Hierarchy</title>
-      <xi:include href="xml/tree_index.sgml"/>
-  </chapter-->
+    <xi:include href="xml/api-index-full.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-deprecated" role="deprecated">
+    <title>Index of deprecated symbols</title>
+    <xi:include href="xml/api-index-deprecated.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-0" role="1.0">
+    <title>Index of new symbols in 1.0</title>
+    <xi:include href="xml/api-index-1.0.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-2" role="1.2">
+    <title>Index of new symbols in 1.2</title>
+    <xi:include href="xml/api-index-1.2.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-4" role="1.4">
+    <title>Index of new symbols in 1.4</title>
+    <xi:include href="xml/api-index-1.4.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-6" role="1.6">
+    <title>Index of new symbols in 1.6</title>
+    <xi:include href="xml/api-index-1.6.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-8" role="1.8">
+    <title>Index of new symbols in 1.8</title>
+    <xi:include href="xml/api-index-1.8.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-10" role="1.10">
+    <title>Index of new symbols in 1.10</title>
+    <xi:include href="xml/api-index-1.10.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-12" role="1.12">
+    <title>Index of new symbols in 1.12</title>
+    <xi:include href="xml/api-index-1.12.xml"></xi:include>
+  </chapter>
 </book>
diff --git a/docs/reference/api/ModemManager-sections.txt b/docs/reference/api/ModemManager-sections.txt
index 15d976c..f1d6b27 100644
--- a/docs/reference/api/ModemManager-sections.txt
+++ b/docs/reference/api/ModemManager-sections.txt
@@ -161,6 +161,7 @@
 ID_MM_PORT_TYPE_AT_SECONDARY
 ID_MM_PORT_TYPE_GPS
 ID_MM_PORT_TYPE_QCDM
+ID_MM_PORT_TYPE_AUDIO
 ID_MM_TTY_BAUDRATE
 ID_MM_TTY_FLOW_CONTROL
 </SECTION>
diff --git a/docs/reference/libmm-glib/libmm-glib-docs.xml b/docs/reference/libmm-glib/libmm-glib-docs.xml
index ec4d4c9..3e8ff82 100644
--- a/docs/reference/libmm-glib/libmm-glib-docs.xml
+++ b/docs/reference/libmm-glib/libmm-glib-docs.xml
@@ -250,16 +250,42 @@
     <title>Object Hierarchy</title>
     <xi:include href="xml/tree_index.sgml"/>
   </chapter>
+  <chapter id="api-index-full">
+    <title>Index</title>
+    <xi:include href="xml/api-index-full.xml"></xi:include>
+  </chapter>
+  <chapter id="deprecated-api-index" role="deprecated">
+    <title>Index of deprecated symbols</title>
+    <xi:include href="xml/api-index-deprecated.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-0" role="1.0">
+    <title>Index of new symbols in 1.0</title>
+    <xi:include href="xml/api-index-1.0.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-2" role="1.2">
+    <title>Index of new symbols in 1.2</title>
+    <xi:include href="xml/api-index-1.2.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-4" role="1.4">
+    <title>Index of new symbols in 1.4</title>
+    <xi:include href="xml/api-index-1.4.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-6" role="1.6">
+    <title>Index of new symbols in 1.6</title>
+    <xi:include href="xml/api-index-1.6.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-8" role="1.8">
+    <title>Index of new symbols in 1.8</title>
+    <xi:include href="xml/api-index-1.8.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-10" role="1.10">
+    <title>Index of new symbols in 1.10</title>
+    <xi:include href="xml/api-index-1.10.xml"></xi:include>
+  </chapter>
+  <chapter id="api-index-1-12" role="1.12">
+    <title>Index of new symbols in 1.12</title>
+    <xi:include href="xml/api-index-1.12.xml"></xi:include>
+  </chapter>
 
-  <index>
-    <title>API Index</title>
-    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
-  </index>
-
-  <index id="deprecated-api-index" role="deprecated">
-    <title>Index of deprecated API</title>
-    <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
-  </index>
-
-  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+  <xi:include href="xml/annotation-glossary.xml"></xi:include>
 </book>
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index bc3eeb9..f70ad45 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -1202,6 +1202,8 @@
 mm_sim_dup_operator_identifier
 mm_sim_get_operator_name
 mm_sim_dup_operator_name
+mm_sim_get_emergency_numbers
+mm_sim_dup_emergency_numbers
 <SUBSECTION Methods>
 mm_sim_send_pin
 mm_sim_send_pin_finish
@@ -1415,7 +1417,6 @@
 mm_pco_is_complete
 mm_pco_get_data
 <SUBSECTION List>
-mm_pco_list_add
 mm_pco_list_free
 <SUBSECTION Private>
 mm_pco_new
@@ -1424,6 +1425,7 @@
 mm_pco_set_session_id
 mm_pco_set_complete
 mm_pco_set_data
+mm_pco_list_add
 <SUBSECTION Standard>
 MMPcoClass
 MMPcoPrivate
@@ -3076,6 +3078,8 @@
 mm_gdbus_sim_dup_operator_identifier
 mm_gdbus_sim_get_operator_name
 mm_gdbus_sim_dup_operator_name
+mm_gdbus_sim_get_emergency_numbers
+mm_gdbus_sim_dup_emergency_numbers
 <SUBSECTION Methods>
 mm_gdbus_sim_call_send_pin
 mm_gdbus_sim_call_send_pin_finish
@@ -3094,6 +3098,7 @@
 mm_gdbus_sim_set_operator_identifier
 mm_gdbus_sim_set_operator_name
 mm_gdbus_sim_set_sim_identifier
+mm_gdbus_sim_set_emergency_numbers
 mm_gdbus_sim_complete_change_pin
 mm_gdbus_sim_complete_enable_pin
 mm_gdbus_sim_complete_send_pin
diff --git a/include/ModemManager-compat.h b/include/ModemManager-compat.h
index 6eb687e..e145840 100644
--- a/include/ModemManager-compat.h
+++ b/include/ModemManager-compat.h
@@ -22,8 +22,6 @@
 
 #include <ModemManager-enums.h>
 
-#ifndef MM_DISABLE_DEPRECATED
-
 /**
  * SECTION:mm-compat
  * @title: API break replacements
@@ -41,6 +39,8 @@
 # define MM_DEPRECATED
 #endif
 
+#ifndef MM_DISABLE_DEPRECATED
+
 /* The following type exists just so that we can get deprecation warnings */
 MM_DEPRECATED
 typedef int MMModemBandDeprecated;
@@ -51,7 +51,7 @@
  * WCDMA 2100 MHz (UTRAN band 1).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_1 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_1 instead.
  */
 #define MM_MODEM_BAND_U2100 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_1)
 
@@ -61,7 +61,7 @@
  * WCDMA 1900 MHz (UTRAN band 2).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_2 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_2 instead.
  */
 #define MM_MODEM_BAND_U1900 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_2)
 
@@ -71,7 +71,7 @@
  * WCDMA 1800 MHz (UTRAN band 3).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_3 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_3 instead.
  */
 #define MM_MODEM_BAND_U1800 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_3)
 
@@ -81,7 +81,7 @@
  * AWS 1700/2100 MHz (UTRAN band 4).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_4 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_4 instead.
  */
 #define MM_MODEM_BAND_U17IV ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_4)
 
@@ -91,7 +91,7 @@
  * UMTS 850 MHz (UTRAN band 5).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_5 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_5 instead.
  */
 #define MM_MODEM_BAND_U850 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_5)
 
@@ -101,7 +101,7 @@
  * UMTS 800 MHz (UTRAN band 6).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_6 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_6 instead.
  */
 #define MM_MODEM_BAND_U800 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_6)
 
@@ -111,7 +111,7 @@
  * UMTS 2600 MHz (UTRAN band 7).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_7 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_7 instead.
  */
 #define MM_MODEM_BAND_U2600 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_7)
 
@@ -121,7 +121,7 @@
  * UMTS 900 MHz (UTRAN band 8).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_8 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_8 instead.
  */
 #define MM_MODEM_BAND_U900 ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_8)
 
@@ -131,7 +131,7 @@
  * UMTS 1700 MHz (UTRAN band 9).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_UTRAN_9 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_UTRAN_9 instead.
  */
 #define MM_MODEM_BAND_U17IX ((MMModemBandDeprecated)MM_MODEM_BAND_UTRAN_9)
 
@@ -141,7 +141,7 @@
  * E-UTRAN band 1.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_1 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_1 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_I ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_1)
 
@@ -151,7 +151,7 @@
  * E-UTRAN band 2.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_2 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_2 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_II ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_2)
 
@@ -161,7 +161,7 @@
  * E-UTRAN band 3.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_3 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_3 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_III ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_3)
 
@@ -171,7 +171,7 @@
  * E-UTRAN band 4.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_4 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_4 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_IV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_4)
 
@@ -181,7 +181,7 @@
  * E-UTRAN band 5.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_5 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_5 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_V ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_5)
 
@@ -191,7 +191,7 @@
  * E-UTRAN band 6.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_6 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_6 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_VI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_6)
 
@@ -201,7 +201,7 @@
  * E-UTRAN band 7.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_7 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_7 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_VII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_7)
 
@@ -211,7 +211,7 @@
  * E-UTRAN band 8.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_8 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_8 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_VIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_8)
 
@@ -221,7 +221,7 @@
  * E-UTRAN band 9.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_9 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_9 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_IX ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_9)
 
@@ -231,7 +231,7 @@
  * E-UTRAN band 10.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_10 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_10 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_X ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_10)
 
@@ -241,7 +241,7 @@
  * E-UTRAN band 11.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_11 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_11 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_11)
 
@@ -251,7 +251,7 @@
  * E-UTRAN band 12.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_12 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_12 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_12)
 
@@ -261,7 +261,7 @@
  * E-UTRAN band 13.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_13 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_13 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_13)
 
@@ -271,7 +271,7 @@
  * E-UTRAN band 14.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_14 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_14 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XIV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_14)
 
@@ -281,7 +281,7 @@
  * E-UTRAN band 17.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_17 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_17 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XVII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_17)
 
@@ -291,7 +291,7 @@
  * E-UTRAN band 18.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_18 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_18 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XVIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_18)
 
@@ -301,7 +301,7 @@
  * E-UTRAN band 19.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_19 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_19 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XIX ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_19)
 
@@ -311,7 +311,7 @@
  * E-UTRAN band 20.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_20 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_20 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XX ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_20)
 
@@ -321,7 +321,7 @@
  * E-UTRAN band 21.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_21 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_21 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_21)
 
@@ -331,7 +331,7 @@
  * E-UTRAN band 22.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_22 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_22 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_22)
 
@@ -341,7 +341,7 @@
  * E-UTRAN band 23.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_23 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_23 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_23)
 
@@ -351,7 +351,7 @@
  * E-UTRAN band 24.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_24 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_24 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXIV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_24)
 
@@ -361,7 +361,7 @@
  * E-UTRAN band 25.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_25 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_25 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_25)
 
@@ -371,7 +371,7 @@
  * E-UTRAN band 26.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_26 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_26 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXVI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_26)
 
@@ -381,7 +381,7 @@
  * E-UTRAN band 33.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_33 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_33 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_33)
 
@@ -391,7 +391,7 @@
  * E-UTRAN band 34.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_34 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_34 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXIV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_34)
 
@@ -401,7 +401,7 @@
  * E-UTRAN band 35.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_35 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_35 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_35)
 
@@ -411,7 +411,7 @@
  * E-UTRAN band 36.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_36 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_36 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXVI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_36)
 
@@ -421,7 +421,7 @@
  * E-UTRAN band 37.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_37 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_37 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXVII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_37)
 
@@ -431,7 +431,7 @@
  * E-UTRAN band 38.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_38 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_38 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXVIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_38)
 
@@ -441,7 +441,7 @@
  * E-UTRAN band 39.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_39 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_39 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XXXIX ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_39)
 
@@ -451,7 +451,7 @@
  * E-UTRAN band 40.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_40 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_40 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XL ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_40)
 
@@ -461,7 +461,7 @@
  * E-UTRAN band 41.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_41 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_41 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XLI ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_41)
 
@@ -471,7 +471,7 @@
  * E-UTRAN band 42.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_42 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_42 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XLII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_42)
 
@@ -481,7 +481,7 @@
  * E-UTRAN band 43.
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_43 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_43 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XLIII ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_43)
 
@@ -490,8 +490,8 @@
  *
  * E-UTRAN band 44.
  *
- * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_EUTRAN_44 instead.
+ * Since: 1.4
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_EUTRAN_44 instead.
  */
 #define MM_MODEM_BAND_EUTRAN_XLIV ((MMModemBandDeprecated)MM_MODEM_BAND_EUTRAN_44)
 
@@ -501,7 +501,7 @@
  * CDMA Band Class 0 (US Cellular 850MHz)
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC0 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC0 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC0_CELLULAR_800 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC0)
 
@@ -511,7 +511,7 @@
  * CDMA Band Class 1 (US PCS 1900MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC1 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC1 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC1_PCS_1900 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC1)
 
@@ -521,7 +521,7 @@
  * CDMA Band Class 2 (UK TACS 900MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC2 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC2 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC2_TACS ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC2)
 
@@ -531,7 +531,7 @@
  * CDMA Band Class 3 (Japanese TACS).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC3 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC3 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC3_JTACS ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC3)
 
@@ -541,7 +541,7 @@
  * CDMA Band Class 4 (Korean PCS).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC4 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC4 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC4_KOREAN_PCS ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC4)
 
@@ -551,7 +551,7 @@
  * CDMA Band Class 5 (NMT 450MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC5 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC5 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC5_NMT450 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC5)
 
@@ -561,7 +561,7 @@
  * CDMA Band Class 6 (IMT2000 2100MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC6 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC6 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC6_IMT2000 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC6)
 
@@ -571,7 +571,7 @@
  * CDMA Band Class 7 (Cellular 700MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC7 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC7 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC7_CELLULAR_700 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC7)
 
@@ -581,7 +581,7 @@
  * CDMA Band Class 8 (1800MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC8 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC8 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC8_1800 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC8)
 
@@ -591,7 +591,7 @@
  * CDMA Band Class 9 (900MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC9 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC9 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC9_900 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC9)
 
@@ -601,7 +601,7 @@
  * CDMA Band Class 10 (US Secondary 800).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC10 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC10 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC10_SECONDARY_800 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC10)
 
@@ -611,7 +611,7 @@
  * CDMA Band Class 11 (European PAMR 400MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC11 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC11 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC11_PAMR_400 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC11)
 
@@ -621,7 +621,7 @@
  * CDMA Band Class 12 (PAMR 800MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC12 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC12 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC12_PAMR_800 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC12)
 
@@ -631,7 +631,7 @@
  * CDMA Band Class 13 (IMT2000 2500MHz Expansion).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC13 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC13 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC13_IMT2000_2500 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC13)
 
@@ -641,7 +641,7 @@
  * CDMA Band Class 14 (More US PCS 1900MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC14 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC14 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC14_PCS2_1900 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC14)
 
@@ -651,7 +651,7 @@
  * CDMA Band Class 15 (AWS 1700MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC15 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC15 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC15_AWS ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC15)
 
@@ -661,7 +661,7 @@
  * CDMA Band Class 16 (US 2500MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC16 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC16 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC16_US_2500 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC16)
 
@@ -671,7 +671,7 @@
  * CDMA Band Class 17 (US 2500MHz Forward Link Only).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC17 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC17 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC17_US_FLO_2500 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC17)
 
@@ -681,7 +681,7 @@
  * CDMA Band Class 18 (US 700MHz Public Safety).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC18 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC18 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC18_US_PS_700 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC18)
 
@@ -691,7 +691,7 @@
  * CDMA Band Class 19 (US Lower 700MHz).
  *
  * Since: 1.0
- * Deprecated: 1.8.0: Use #MM_MODEM_BAND_CDMA_BC19 instead.
+ * Deprecated: 1.8: Use #MM_MODEM_BAND_CDMA_BC19 instead.
  */
 #define MM_MODEM_BAND_CDMA_BC19_US_LOWER_700 ((MMModemBandDeprecated)MM_MODEM_BAND_CDMA_BC19)
 
@@ -704,7 +704,7 @@
  *
  * A-GPS location requested.
  *
- * Since: 1.0
+ * Since: 1.6
  * Deprecated: 1.12.0: Use #MM_MODEM_LOCATION_SOURCE_AGPS_MSA instead.
  */
 #define MM_MODEM_LOCATION_SOURCE_AGPS ((MMModemLocationSourceDeprecated)MM_MODEM_LOCATION_SOURCE_AGPS_MSA)
diff --git a/include/ModemManager-enums.h b/include/ModemManager-enums.h
index c26e169..bf068bd 100644
--- a/include/ModemManager-enums.h
+++ b/include/ModemManager-enums.h
@@ -42,6 +42,8 @@
  *
  * Flags describing one or more of the general access technology families that a
  * modem supports.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_capability >*/
     MM_MODEM_CAPABILITY_NONE         = 0,
@@ -75,6 +77,8 @@
  * @MM_MODEM_LOCK_PH_NETSUB_PUK: Modem requires the network subset PUK code.
  *
  * Enumeration of possible lock reasons.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_lock >*/
     MM_MODEM_LOCK_UNKNOWN        = 0,
@@ -113,6 +117,8 @@
  * @MM_MODEM_STATE_CONNECTED: One or more packet data bearers is active and connected.
  *
  * Enumeration of possible modem states.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_state >*/
     MM_MODEM_STATE_FAILED        = -1,
@@ -138,6 +144,8 @@
  * @MM_MODEM_STATE_FAILED_REASON_SIM_ERROR: SIM is available, but unusable (e.g. permanently locked).
  *
  * Enumeration of possible errors when the modem is in @MM_MODEM_STATE_FAILED.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_state_failed_reason >*/
     MM_MODEM_STATE_FAILED_REASON_NONE        = 0,
@@ -154,6 +162,8 @@
  * @MM_MODEM_POWER_STATE_ON: Full power mode.
  *
  * Power state of the modem.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_power_state >*/
     MM_MODEM_POWER_STATE_UNKNOWN = 0,
@@ -170,6 +180,8 @@
  * @MM_MODEM_STATE_CHANGE_REASON_FAILURE: State change was caused by an unrecoverable error.
  *
  * Enumeration of possible reasons to have changed the modem state.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_state_change_reason >*/
     MM_MODEM_STATE_CHANGE_REASON_UNKNOWN        = 0,
@@ -200,6 +212,8 @@
  *
  * Describes various access technologies that a device uses when registered with
  * or connected to a network.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_access_technology >*/
     MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN     = 0,
@@ -232,6 +246,8 @@
  *
  * Bitfield to indicate which access modes are supported, allowed or
  * preferred in a given device.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_mode >*/
     MM_MODEM_MODE_NONE = 0,
@@ -256,119 +272,121 @@
  * @MM_MODEM_BAND_G410: GSM/GPRS/EDGE 410 MHz.
  * @MM_MODEM_BAND_G710: GSM/GPRS/EDGE 710 MHz.
  * @MM_MODEM_BAND_G810: GSM/GPRS/EDGE 810 MHz.
- * @MM_MODEM_BAND_UTRAN_1: UMTS 2100 MHz (IMT, UTRAN band 1).
- * @MM_MODEM_BAND_UTRAN_2: UMTS 1900 MHz (PCS A-F, UTRAN band 2).
- * @MM_MODEM_BAND_UTRAN_3: UMTS 1800 MHz (DCS, UTRAN band 3).
- * @MM_MODEM_BAND_UTRAN_4: UMTS 1700 MHz (AWS A-F, UTRAN band 4).
- * @MM_MODEM_BAND_UTRAN_5: UMTS 850 MHz (CLR, UTRAN band 5).
- * @MM_MODEM_BAND_UTRAN_6: UMTS 800 MHz (UTRAN band 6).
- * @MM_MODEM_BAND_UTRAN_7: UMTS 2600 MHz (IMT-E, UTRAN band 7).
- * @MM_MODEM_BAND_UTRAN_8: UMTS 900 MHz (E-GSM, UTRAN band 8).
- * @MM_MODEM_BAND_UTRAN_9: UMTS 1700 MHz (UTRAN band 9).
- * @MM_MODEM_BAND_UTRAN_10: UMTS 1700 MHz (EAWS A-G, UTRAN band 10).
- * @MM_MODEM_BAND_UTRAN_11: UMTS 1500 MHz (LPDC, UTRAN band 11).
- * @MM_MODEM_BAND_UTRAN_12: UMTS 700 MHz (LSMH A/B/C, UTRAN band 12).
- * @MM_MODEM_BAND_UTRAN_13: UMTS 700 MHz (USMH C, UTRAN band 13).
- * @MM_MODEM_BAND_UTRAN_14: UMTS 700 MHz (USMH D, UTRAN band 14).
- * @MM_MODEM_BAND_UTRAN_19: UMTS 800 MHz (UTRAN band 19).
- * @MM_MODEM_BAND_UTRAN_20: UMTS 800 MHz (EUDD, UTRAN band 20).
- * @MM_MODEM_BAND_UTRAN_21: UMTS 1500 MHz (UPDC, UTRAN band 21).
- * @MM_MODEM_BAND_UTRAN_22: UMTS 3500 MHz (UTRAN band 22).
- * @MM_MODEM_BAND_UTRAN_25: UMTS 1900 MHz (EPCS A-G, UTRAN band 25).
- * @MM_MODEM_BAND_UTRAN_26: UMTS 850 MHz (ECLR, UTRAN band 26).
- * @MM_MODEM_BAND_UTRAN_32: UMTS 1500 MHz (L-band, UTRAN band 32).
- * @MM_MODEM_BAND_EUTRAN_1: E-UTRAN band 1.
- * @MM_MODEM_BAND_EUTRAN_2: E-UTRAN band 2.
- * @MM_MODEM_BAND_EUTRAN_3: E-UTRAN band 3.
- * @MM_MODEM_BAND_EUTRAN_4: E-UTRAN band 4.
- * @MM_MODEM_BAND_EUTRAN_5: E-UTRAN band 5.
- * @MM_MODEM_BAND_EUTRAN_6: E-UTRAN band 6.
- * @MM_MODEM_BAND_EUTRAN_7: E-UTRAN band 7.
- * @MM_MODEM_BAND_EUTRAN_8: E-UTRAN band 8.
- * @MM_MODEM_BAND_EUTRAN_9: E-UTRAN band 9.
- * @MM_MODEM_BAND_EUTRAN_10: E-UTRAN band 10.
- * @MM_MODEM_BAND_EUTRAN_11: E-UTRAN band 11.
- * @MM_MODEM_BAND_EUTRAN_12: E-UTRAN band 12.
- * @MM_MODEM_BAND_EUTRAN_13: E-UTRAN band 13.
- * @MM_MODEM_BAND_EUTRAN_14: E-UTRAN band 14.
- * @MM_MODEM_BAND_EUTRAN_17: E-UTRAN band 17.
- * @MM_MODEM_BAND_EUTRAN_18: E-UTRAN band 18.
- * @MM_MODEM_BAND_EUTRAN_19: E-UTRAN band 19.
- * @MM_MODEM_BAND_EUTRAN_20: E-UTRAN band 20.
- * @MM_MODEM_BAND_EUTRAN_21: E-UTRAN band 21.
- * @MM_MODEM_BAND_EUTRAN_22: E-UTRAN band 22.
- * @MM_MODEM_BAND_EUTRAN_23: E-UTRAN band 23.
- * @MM_MODEM_BAND_EUTRAN_24: E-UTRAN band 24.
- * @MM_MODEM_BAND_EUTRAN_25: E-UTRAN band 25.
- * @MM_MODEM_BAND_EUTRAN_26: E-UTRAN band 26.
- * @MM_MODEM_BAND_EUTRAN_27: E-UTRAN band 27.
- * @MM_MODEM_BAND_EUTRAN_28: E-UTRAN band 28.
- * @MM_MODEM_BAND_EUTRAN_29: E-UTRAN band 29.
- * @MM_MODEM_BAND_EUTRAN_30: E-UTRAN band 30.
- * @MM_MODEM_BAND_EUTRAN_31: E-UTRAN band 31.
- * @MM_MODEM_BAND_EUTRAN_32: E-UTRAN band 32.
- * @MM_MODEM_BAND_EUTRAN_33: E-UTRAN band 33.
- * @MM_MODEM_BAND_EUTRAN_34: E-UTRAN band 34.
- * @MM_MODEM_BAND_EUTRAN_35: E-UTRAN band 35.
- * @MM_MODEM_BAND_EUTRAN_36: E-UTRAN band 36.
- * @MM_MODEM_BAND_EUTRAN_37: E-UTRAN band 37.
- * @MM_MODEM_BAND_EUTRAN_38: E-UTRAN band 38.
- * @MM_MODEM_BAND_EUTRAN_39: E-UTRAN band 39.
- * @MM_MODEM_BAND_EUTRAN_40: E-UTRAN band 40.
- * @MM_MODEM_BAND_EUTRAN_41: E-UTRAN band 41.
- * @MM_MODEM_BAND_EUTRAN_42: E-UTRAN band 42.
- * @MM_MODEM_BAND_EUTRAN_43: E-UTRAN band 43.
- * @MM_MODEM_BAND_EUTRAN_44: E-UTRAN band 44.
- * @MM_MODEM_BAND_EUTRAN_45: E-UTRAN band 45.
- * @MM_MODEM_BAND_EUTRAN_46: E-UTRAN band 46.
- * @MM_MODEM_BAND_EUTRAN_47: E-UTRAN band 47.
- * @MM_MODEM_BAND_EUTRAN_48: E-UTRAN band 48.
- * @MM_MODEM_BAND_EUTRAN_49: E-UTRAN band 49.
- * @MM_MODEM_BAND_EUTRAN_50: E-UTRAN band 50.
- * @MM_MODEM_BAND_EUTRAN_51: E-UTRAN band 51.
- * @MM_MODEM_BAND_EUTRAN_52: E-UTRAN band 52.
- * @MM_MODEM_BAND_EUTRAN_53: E-UTRAN band 53.
- * @MM_MODEM_BAND_EUTRAN_54: E-UTRAN band 54.
- * @MM_MODEM_BAND_EUTRAN_55: E-UTRAN band 55.
- * @MM_MODEM_BAND_EUTRAN_56: E-UTRAN band 56.
- * @MM_MODEM_BAND_EUTRAN_57: E-UTRAN band 57.
- * @MM_MODEM_BAND_EUTRAN_58: E-UTRAN band 58.
- * @MM_MODEM_BAND_EUTRAN_59: E-UTRAN band 59.
- * @MM_MODEM_BAND_EUTRAN_60: E-UTRAN band 60.
- * @MM_MODEM_BAND_EUTRAN_61: E-UTRAN band 61.
- * @MM_MODEM_BAND_EUTRAN_62: E-UTRAN band 62.
- * @MM_MODEM_BAND_EUTRAN_63: E-UTRAN band 63.
- * @MM_MODEM_BAND_EUTRAN_64: E-UTRAN band 64.
- * @MM_MODEM_BAND_EUTRAN_65: E-UTRAN band 65.
- * @MM_MODEM_BAND_EUTRAN_66: E-UTRAN band 66.
- * @MM_MODEM_BAND_EUTRAN_67: E-UTRAN band 67.
- * @MM_MODEM_BAND_EUTRAN_68: E-UTRAN band 68.
- * @MM_MODEM_BAND_EUTRAN_69: E-UTRAN band 69.
- * @MM_MODEM_BAND_EUTRAN_70: E-UTRAN band 70.
- * @MM_MODEM_BAND_EUTRAN_71: E-UTRAN band 71.
- * @MM_MODEM_BAND_CDMA_BC0: CDMA Band Class 0 (US Cellular 850MHz).
- * @MM_MODEM_BAND_CDMA_BC1: CDMA Band Class 1 (US PCS 1900MHz).
- * @MM_MODEM_BAND_CDMA_BC2: CDMA Band Class 2 (UK TACS 900MHz).
- * @MM_MODEM_BAND_CDMA_BC3: CDMA Band Class 3 (Japanese TACS).
- * @MM_MODEM_BAND_CDMA_BC4: CDMA Band Class 4 (Korean PCS).
- * @MM_MODEM_BAND_CDMA_BC5: CDMA Band Class 5 (NMT 450MHz).
- * @MM_MODEM_BAND_CDMA_BC6: CDMA Band Class 6 (IMT2000 2100MHz).
- * @MM_MODEM_BAND_CDMA_BC7: CDMA Band Class 7 (Cellular 700MHz).
- * @MM_MODEM_BAND_CDMA_BC8: CDMA Band Class 8 (1800MHz).
- * @MM_MODEM_BAND_CDMA_BC9: CDMA Band Class 9 (900MHz).
- * @MM_MODEM_BAND_CDMA_BC10: CDMA Band Class 10 (US Secondary 800).
- * @MM_MODEM_BAND_CDMA_BC11: CDMA Band Class 11 (European PAMR 400MHz).
- * @MM_MODEM_BAND_CDMA_BC12: CDMA Band Class 12 (PAMR 800MHz).
- * @MM_MODEM_BAND_CDMA_BC13: CDMA Band Class 13 (IMT2000 2500MHz Expansion).
- * @MM_MODEM_BAND_CDMA_BC14: CDMA Band Class 14 (More US PCS 1900MHz).
- * @MM_MODEM_BAND_CDMA_BC15: CDMA Band Class 15 (AWS 1700MHz).
- * @MM_MODEM_BAND_CDMA_BC16: CDMA Band Class 16 (US 2500MHz).
- * @MM_MODEM_BAND_CDMA_BC17: CDMA Band Class 17 (US 2500MHz Forward Link Only).
- * @MM_MODEM_BAND_CDMA_BC18: CDMA Band Class 18 (US 700MHz Public Safety).
- * @MM_MODEM_BAND_CDMA_BC19: CDMA Band Class 19 (US Lower 700MHz).
+ * @MM_MODEM_BAND_UTRAN_1: UMTS 2100 MHz (IMT, UTRAN band 1). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_2: UMTS 1900 MHz (PCS A-F, UTRAN band 2). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_3: UMTS 1800 MHz (DCS, UTRAN band 3). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_4: UMTS 1700 MHz (AWS A-F, UTRAN band 4). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_5: UMTS 850 MHz (CLR, UTRAN band 5). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_6: UMTS 800 MHz (UTRAN band 6). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_7: UMTS 2600 MHz (IMT-E, UTRAN band 7). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_8: UMTS 900 MHz (E-GSM, UTRAN band 8). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_9: UMTS 1700 MHz (UTRAN band 9). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_10: UMTS 1700 MHz (EAWS A-G, UTRAN band 10). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_11: UMTS 1500 MHz (LPDC, UTRAN band 11). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_12: UMTS 700 MHz (LSMH A/B/C, UTRAN band 12). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_13: UMTS 700 MHz (USMH C, UTRAN band 13). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_14: UMTS 700 MHz (USMH D, UTRAN band 14). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_19: UMTS 800 MHz (UTRAN band 19). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_20: UMTS 800 MHz (EUDD, UTRAN band 20). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_21: UMTS 1500 MHz (UPDC, UTRAN band 21). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_22: UMTS 3500 MHz (UTRAN band 22). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_25: UMTS 1900 MHz (EPCS A-G, UTRAN band 25). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_26: UMTS 850 MHz (ECLR, UTRAN band 26). Since 1.8.
+ * @MM_MODEM_BAND_UTRAN_32: UMTS 1500 MHz (L-band, UTRAN band 32). Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_1: E-UTRAN band 1. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_2: E-UTRAN band 2. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_3: E-UTRAN band 3. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_4: E-UTRAN band 4. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_5: E-UTRAN band 5. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_6: E-UTRAN band 6. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_7: E-UTRAN band 7. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_8: E-UTRAN band 8. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_9: E-UTRAN band 9. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_10: E-UTRAN band 10. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_11: E-UTRAN band 11. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_12: E-UTRAN band 12. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_13: E-UTRAN band 13. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_14: E-UTRAN band 14. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_17: E-UTRAN band 17. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_18: E-UTRAN band 18. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_19: E-UTRAN band 19. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_20: E-UTRAN band 20. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_21: E-UTRAN band 21. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_22: E-UTRAN band 22. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_23: E-UTRAN band 23. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_24: E-UTRAN band 24. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_25: E-UTRAN band 25. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_26: E-UTRAN band 26. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_27: E-UTRAN band 27. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_28: E-UTRAN band 28. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_29: E-UTRAN band 29. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_30: E-UTRAN band 30. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_31: E-UTRAN band 31. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_32: E-UTRAN band 32. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_33: E-UTRAN band 33. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_34: E-UTRAN band 34. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_35: E-UTRAN band 35. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_36: E-UTRAN band 36. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_37: E-UTRAN band 37. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_38: E-UTRAN band 38. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_39: E-UTRAN band 39. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_40: E-UTRAN band 40. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_41: E-UTRAN band 41. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_42: E-UTRAN band 42. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_43: E-UTRAN band 43. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_44: E-UTRAN band 44. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_45: E-UTRAN band 45. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_46: E-UTRAN band 46. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_47: E-UTRAN band 47. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_48: E-UTRAN band 48. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_49: E-UTRAN band 49. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_50: E-UTRAN band 50. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_51: E-UTRAN band 51. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_52: E-UTRAN band 52. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_53: E-UTRAN band 53. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_54: E-UTRAN band 54. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_55: E-UTRAN band 55. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_56: E-UTRAN band 56. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_57: E-UTRAN band 57. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_58: E-UTRAN band 58. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_59: E-UTRAN band 59. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_60: E-UTRAN band 60. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_61: E-UTRAN band 61. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_62: E-UTRAN band 62. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_63: E-UTRAN band 63. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_64: E-UTRAN band 64. Since 1.10.
+ * @MM_MODEM_BAND_EUTRAN_65: E-UTRAN band 65. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_66: E-UTRAN band 66. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_67: E-UTRAN band 67. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_68: E-UTRAN band 68. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_69: E-UTRAN band 69. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_70: E-UTRAN band 70. Since 1.8.
+ * @MM_MODEM_BAND_EUTRAN_71: E-UTRAN band 71. Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC0: CDMA Band Class 0 (US Cellular 850MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC1: CDMA Band Class 1 (US PCS 1900MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC2: CDMA Band Class 2 (UK TACS 900MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC3: CDMA Band Class 3 (Japanese TACS). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC4: CDMA Band Class 4 (Korean PCS). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC5: CDMA Band Class 5 (NMT 450MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC6: CDMA Band Class 6 (IMT2000 2100MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC7: CDMA Band Class 7 (Cellular 700MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC8: CDMA Band Class 8 (1800MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC9: CDMA Band Class 9 (900MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC10: CDMA Band Class 10 (US Secondary 800). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC11: CDMA Band Class 11 (European PAMR 400MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC12: CDMA Band Class 12 (PAMR 800MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC13: CDMA Band Class 13 (IMT2000 2500MHz Expansion). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC14: CDMA Band Class 14 (More US PCS 1900MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC15: CDMA Band Class 15 (AWS 1700MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC16: CDMA Band Class 16 (US 2500MHz). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC17: CDMA Band Class 17 (US 2500MHz Forward Link Only). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC18: CDMA Band Class 18 (US 700MHz Public Safety). Since 1.8.
+ * @MM_MODEM_BAND_CDMA_BC19: CDMA Band Class 19 (US Lower 700MHz). Since 1.8.
  * @MM_MODEM_BAND_ANY: For certain operations, allow the modem to select a band automatically.
  *
  * Radio bands supported by the device when connecting to a mobile network.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_band >*/
     MM_MODEM_BAND_UNKNOWN = 0,
@@ -514,9 +532,11 @@
  * @MM_MODEM_PORT_TYPE_GPS: GPS port.
  * @MM_MODEM_PORT_TYPE_QMI: QMI port.
  * @MM_MODEM_PORT_TYPE_MBIM: MBIM port.
- * @MM_MODEM_PORT_TYPE_AUDIO: Audio port.
+ * @MM_MODEM_PORT_TYPE_AUDIO: Audio port. Since 1.12.
  *
  * Type of modem port.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_port_type >*/
     MM_MODEM_PORT_TYPE_UNKNOWN = 1,
@@ -535,14 +555,16 @@
  * @MM_SMS_PDU_TYPE_DELIVER: 3GPP Mobile-Terminated (MT) message.
  * @MM_SMS_PDU_TYPE_SUBMIT: 3GPP Mobile-Originated (MO) message.
  * @MM_SMS_PDU_TYPE_STATUS_REPORT: 3GPP status report (MT).
- * @MM_SMS_PDU_TYPE_CDMA_DELIVER: 3GPP2 Mobile-Terminated (MT) message.
- * @MM_SMS_PDU_TYPE_CDMA_SUBMIT: 3GPP2 Mobile-Originated (MO) message.
- * @MM_SMS_PDU_TYPE_CDMA_CANCELLATION: 3GPP2 Cancellation (MO) message.
- * @MM_SMS_PDU_TYPE_CDMA_DELIVERY_ACKNOWLEDGEMENT: 3GPP2 Delivery Acknowledgement (MT) message.
- * @MM_SMS_PDU_TYPE_CDMA_USER_ACKNOWLEDGEMENT: 3GPP2 User Acknowledgement (MT or MO) message.
- * @MM_SMS_PDU_TYPE_CDMA_READ_ACKNOWLEDGEMENT: 3GPP2 Read Acknowledgement (MT or MO) message.
+ * @MM_SMS_PDU_TYPE_CDMA_DELIVER: 3GPP2 Mobile-Terminated (MT) message. Since 1.2.
+ * @MM_SMS_PDU_TYPE_CDMA_SUBMIT: 3GPP2 Mobile-Originated (MO) message. Since 1.2.
+ * @MM_SMS_PDU_TYPE_CDMA_CANCELLATION: 3GPP2 Cancellation (MO) message. Since 1.2.
+ * @MM_SMS_PDU_TYPE_CDMA_DELIVERY_ACKNOWLEDGEMENT: 3GPP2 Delivery Acknowledgement (MT) message. Since 1.2.
+ * @MM_SMS_PDU_TYPE_CDMA_USER_ACKNOWLEDGEMENT: 3GPP2 User Acknowledgement (MT or MO) message. Since 1.2.
+ * @MM_SMS_PDU_TYPE_CDMA_READ_ACKNOWLEDGEMENT: 3GPP2 Read Acknowledgement (MT or MO) message. Since 1.2.
  *
  * Type of PDUs used in the SMS.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_sms_pdu_type >*/
     MM_SMS_PDU_TYPE_UNKNOWN = 0,
@@ -567,6 +589,8 @@
  * @MM_SMS_STATE_SENT: The message was successfully sent.
  *
  * State of a given SMS.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_sms_state >*/
     MM_SMS_STATE_UNKNOWN   = 0,
@@ -605,67 +629,69 @@
  * @MM_SMS_DELIVERY_STATE_TEMPORARY_FATAL_ERROR_QOS_NOT_AVAILABLE: Permanent error, QoS not available.
  * @MM_SMS_DELIVERY_STATE_TEMPORARY_FATAL_ERROR_IN_SME: Permanent error in SME.
  * @MM_SMS_DELIVERY_STATE_UNKNOWN: Unknown state.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_ADDRESS_VACANT: Permanent error in network, address vacant.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_ADDRESS_TRANSLATION_FAILURE: Permanent error in network, address translation failure.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_NETWORK_RESOURCE_OUTAGE: Permanent error in network, network resource outage.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_NETWORK_FAILURE: Permanent error in network, network failure.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_INVALID_TELESERVICE_ID: Permanent error in network, invalid teleservice id.
- * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_OTHER: Permanent error, other network problem.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_NO_PAGE_RESPONSE: Permanent error in terminal, no page response.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_BUSY: Permanent error in terminal, destination busy.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_NO_ACKNOWLEDGMENT: Permanent error in terminal, no acknowledgement.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_RESOURCE_SHORTAGE: Permanent error in terminal, destination resource shortage.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_SMS_DELIVERY_POSTPONED: Permanent error in terminal, SMS delivery postponed.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_OUT_OF_SERVICE: Permanent error in terminal, destination out of service.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_NO_LONGER_AT_THIS_ADDRESS: Permanent error in terminal, destination no longer at this address.
- * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_OTHER: Permanent error, other terminal problem.
- * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_RESOURCE_SHORTAGE: Permanent error in radio interface, resource shortage.
- * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_INCOMPATIBILITY: Permanent error in radio interface, problem incompatibility.
- * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_OTHER: Permanent error, other radio interface problem.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_ENCODING: Permanent error, encoding.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_ORIGINATION_DENIED: Permanent error, SMS origination denied.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_TERMINATION_DENIED: Permanent error, SMS termination denied.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED: Permanent error, supplementary service not supported.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_NOT_SUPPORTED: Permanent error, SMS not supported.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_MISSING_EXPECTED_PARAMETER: Permanent error, missing expected parameter.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_MISSING_MANDATORY_PARAMETER: Permanent error, missing mandatory parameter.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_UNRECOGNIZED_PARAMETER_VALUE: Permanent error, unrecognized parameter value.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_UNEXPECTED_PARAMETER_VALUE: Permanent error, unexpected parameter value.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_USER_DATA_SIZE_ERROR: Permanent error, user data size error.
- * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_OTHER: Permanent error, other general problem.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_ADDRESS_VACANT: Temporary error in network, address vacant.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_ADDRESS_TRANSLATION_FAILURE: Temporary error in network, address translation failure.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_NETWORK_RESOURCE_OUTAGE: Temporary error in network, network resource outage.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_NETWORK_FAILURE: Temporary error in network, network failure.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_INVALID_TELESERVICE_ID: Temporary error in network, invalid teleservice id.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_OTHER: Temporary error, other network problem.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_NO_PAGE_RESPONSE: Temporary error in terminal, no page response.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_BUSY: Temporary error in terminal, destination busy.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_NO_ACKNOWLEDGMENT: Temporary error in terminal, no acknowledgement.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_RESOURCE_SHORTAGE: Temporary error in terminal, destination resource shortage.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_SMS_DELIVERY_POSTPONED: Temporary error in terminal, SMS delivery postponed.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_OUT_OF_SERVICE: Temporary error in terminal, destination out of service.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_NO_LONGER_AT_THIS_ADDRESS: Temporary error in terminal, destination no longer at this address.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_OTHER: Temporary error, other terminal problem.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_RESOURCE_SHORTAGE: Temporary error in radio interface, resource shortage.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_INCOMPATIBILITY: Temporary error in radio interface, problem incompatibility.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_OTHER: Temporary error, other radio interface problem.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_ENCODING: Temporary error, encoding.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_ORIGINATION_DENIED: Temporary error, SMS origination denied.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_TERMINATION_DENIED: Temporary error, SMS termination denied.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED: Temporary error, supplementary service not supported.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_NOT_SUPPORTED: Temporary error, SMS not supported.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_MISSING_EXPECTED_PARAMETER: Temporary error, missing expected parameter.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_MISSING_MANDATORY_PARAMETER: Temporary error, missing mandatory parameter.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_UNRECOGNIZED_PARAMETER_VALUE: Temporary error, unrecognized parameter value.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_UNEXPECTED_PARAMETER_VALUE: Temporary error, unexpected parameter value.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_USER_DATA_SIZE_ERROR: Temporary error, user data size error.
- * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_OTHER: Temporary error, other general problem.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_ADDRESS_VACANT: Permanent error in network, address vacant. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_ADDRESS_TRANSLATION_FAILURE: Permanent error in network, address translation failure. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_NETWORK_RESOURCE_OUTAGE: Permanent error in network, network resource outage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_NETWORK_FAILURE: Permanent error in network, network failure. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_INVALID_TELESERVICE_ID: Permanent error in network, invalid teleservice id. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_NETWORK_PROBLEM_OTHER: Permanent error, other network problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_NO_PAGE_RESPONSE: Permanent error in terminal, no page response. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_BUSY: Permanent error in terminal, destination busy. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_NO_ACKNOWLEDGMENT: Permanent error in terminal, no acknowledgement. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_RESOURCE_SHORTAGE: Permanent error in terminal, destination resource shortage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_SMS_DELIVERY_POSTPONED: Permanent error in terminal, SMS delivery postponed. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_OUT_OF_SERVICE: Permanent error in terminal, destination out of service. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_DESTINATION_NO_LONGER_AT_THIS_ADDRESS: Permanent error in terminal, destination no longer at this address. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TERMINAL_PROBLEM_OTHER: Permanent error, other terminal problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_RESOURCE_SHORTAGE: Permanent error in radio interface, resource shortage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_INCOMPATIBILITY: Permanent error in radio interface, problem incompatibility. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_RADIO_INTERFACE_PROBLEM_OTHER: Permanent error, other radio interface problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_ENCODING: Permanent error, encoding. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_ORIGINATION_DENIED: Permanent error, SMS origination denied. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_TERMINATION_DENIED: Permanent error, SMS termination denied. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED: Permanent error, supplementary service not supported. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_SMS_NOT_SUPPORTED: Permanent error, SMS not supported. Since 1.22.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_MISSING_EXPECTED_PARAMETER: Permanent error, missing expected parameter. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_MISSING_MANDATORY_PARAMETER: Permanent error, missing mandatory parameter. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_UNRECOGNIZED_PARAMETER_VALUE: Permanent error, unrecognized parameter value. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_UNEXPECTED_PARAMETER_VALUE: Permanent error, unexpected parameter value. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_USER_DATA_SIZE_ERROR: Permanent error, user data size error. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_GENERAL_PROBLEM_OTHER: Permanent error, other general problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_ADDRESS_VACANT: Temporary error in network, address vacant. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_ADDRESS_TRANSLATION_FAILURE: Temporary error in network, address translation failure. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_NETWORK_RESOURCE_OUTAGE: Temporary error in network, network resource outage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_NETWORK_FAILURE: Temporary error in network, network failure. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_INVALID_TELESERVICE_ID: Temporary error in network, invalid teleservice id. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_NETWORK_PROBLEM_OTHER: Temporary error, other network problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_NO_PAGE_RESPONSE: Temporary error in terminal, no page response. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_BUSY: Temporary error in terminal, destination busy. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_NO_ACKNOWLEDGMENT: Temporary error in terminal, no acknowledgement. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_RESOURCE_SHORTAGE: Temporary error in terminal, destination resource shortage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_SMS_DELIVERY_POSTPONED: Temporary error in terminal, SMS delivery postponed. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_OUT_OF_SERVICE: Temporary error in terminal, destination out of service. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_DESTINATION_NO_LONGER_AT_THIS_ADDRESS: Temporary error in terminal, destination no longer at this address. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_TERMINAL_PROBLEM_OTHER: Temporary error, other terminal problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_RESOURCE_SHORTAGE: Temporary error in radio interface, resource shortage. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_INCOMPATIBILITY: Temporary error in radio interface, problem incompatibility. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_RADIO_INTERFACE_PROBLEM_OTHER: Temporary error, other radio interface problem. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_ENCODING: Temporary error, encoding. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_ORIGINATION_DENIED: Temporary error, SMS origination denied. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_TERMINATION_DENIED: Temporary error, SMS termination denied. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED: Temporary error, supplementary service not supported. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_SMS_NOT_SUPPORTED: Temporary error, SMS not supported. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_MISSING_EXPECTED_PARAMETER: Temporary error, missing expected parameter. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_MISSING_MANDATORY_PARAMETER: Temporary error, missing mandatory parameter. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_UNRECOGNIZED_PARAMETER_VALUE: Temporary error, unrecognized parameter value. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_UNEXPECTED_PARAMETER_VALUE: Temporary error, unexpected parameter value. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_USER_DATA_SIZE_ERROR: Temporary error, user data size error. Since 1.2.
+ * @MM_SMS_DELIVERY_STATE_TEMPORARY_GENERAL_PROBLEM_OTHER: Temporary error, other general problem. Since 1.2.
  *
  * Enumeration of known SMS delivery states as defined in 3GPP TS 03.40 and
  * 3GPP2 N.S0005-O, section 6.5.2.125.
  *
  * States out of the known ranges may also be valid (either reserved or SC-specific).
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_sms_delivery_state >*/
     /* --------------- 3GPP specific errors ---------------------- */
@@ -786,6 +812,8 @@
  * @MM_SMS_STORAGE_TA: Terminal adaptor message storage area.
  *
  * Storage for SMS messages.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_sms_storage >*/
     MM_SMS_STORAGE_UNKNOWN = 0,
@@ -805,6 +833,8 @@
  * @MM_SMS_VALIDITY_TYPE_ENHANCED: Enhanced validity.
  *
  * Type of SMS validity value.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_sms_validity_type >*/
     MM_SMS_VALIDITY_TYPE_UNKNOWN  = 0,
@@ -827,6 +857,8 @@
  *
  * Teleservice IDs supported for CDMA SMS, as defined in 3GPP2 X.S0004-550-E
  * (section 2.256) and 3GPP2 C.S0015-B (section 3.4.3.1).
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_sms_cdma_teleservice_id >*/
     MM_SMS_CDMA_TELESERVICE_ID_UNKNOWN = 0x0000,
@@ -881,6 +913,8 @@
  * @MM_SMS_CDMA_SERVICE_CATEGORY_CMAS_TEST: CMAS test.
  *
  * Service category for CDMA SMS, as defined in 3GPP2 C.R1001-D (section 9.3).
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_sms_cdma_service_category >*/
     MM_SMS_CDMA_SERVICE_CATEGORY_UNKNOWN                          = 0x0000,
@@ -929,11 +963,13 @@
  * @MM_MODEM_LOCATION_SOURCE_GPS_RAW: GPS location given by predefined keys.
  * @MM_MODEM_LOCATION_SOURCE_GPS_NMEA: GPS location given as NMEA traces.
  * @MM_MODEM_LOCATION_SOURCE_CDMA_BS: CDMA base station position.
- * @MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED: No location given, just GPS module setup.
+ * @MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED: No location given, just GPS module setup. Since 1.4.
  * @MM_MODEM_LOCATION_SOURCE_AGPS_MSA: Mobile Station Assisted A-GPS location requested. Since 1.12.
  * @MM_MODEM_LOCATION_SOURCE_AGPS_MSB: Mobile Station Based A-GPS location requested. Since 1.12.
  *
  * Sources of location information supported by the modem.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_location_source >*/
     MM_MODEM_LOCATION_SOURCE_NONE          = 0,
@@ -956,6 +992,8 @@
  * @MM_MODEM_LOCATION_ASSISTANCE_DATA_TYPE_XTRA: Qualcomm gpsOneXTRA.
  *
  * Type of assistance data that may be injected to the GNSS module.
+ *
+ * Since: 1.10
  */
 typedef enum { /*< underscore_name=mm_modem_location_assistance_data_type >*/
     MM_MODEM_LOCATION_ASSISTANCE_DATA_TYPE_NONE = 0,
@@ -970,6 +1008,8 @@
  * @MM_MODEM_CONTACTS_STORAGE_MT: Combined device/ME and SIM/SM phonebook.
  *
  * Specifies different storage locations for contact information.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_contacts_storage >*/
     MM_MODEM_CONTACTS_STORAGE_UNKNOWN = 0,
@@ -992,6 +1032,8 @@
  * specific traffic with different QoS settings.
  *
  * Type of context (2G/3G) or bearer (4G).
+ *
+ * Since: 1.10
  */
 typedef enum { /*< underscore_name=mm_bearer_type >*/
     MM_BEARER_TYPE_UNKNOWN        = 0,
@@ -1018,6 +1060,8 @@
  * is started to obtain the rest of the configuration.
  *
  * Type of IP method configuration to be used in a given Bearer.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_bearer_ip_method >*/
     MM_BEARER_IP_METHOD_UNKNOWN = 0,
@@ -1035,6 +1079,8 @@
  * @MM_BEARER_IP_FAMILY_ANY: Mask specifying all IP families.
  *
  * Type of IP family to be used in a given Bearer.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_bearer_ip_family >*/
     MM_BEARER_IP_FAMILY_NONE    = 0,
@@ -1055,6 +1101,8 @@
  * @MM_BEARER_ALLOWED_AUTH_EAP: EAP.
  *
  * Allowed authentication methods when authenticating with the network.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_bearer_allowed_auth >*/
     MM_BEARER_ALLOWED_AUTH_UNKNOWN  = 0,
@@ -1075,6 +1123,8 @@
  * @MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING: Currently registered on a roaming network.
  *
  * Registration state of a CDMA modem.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_cdma_registration_state >*/
     MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN    = 0,
@@ -1092,6 +1142,8 @@
  * @MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATED: Device is ready for use.
  *
  * Activation state of a CDMA modem.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_cdma_activation_state >*/
     MM_MODEM_CDMA_ACTIVATION_STATE_UNKNOWN             = 0,
@@ -1111,6 +1163,8 @@
  * @MM_MODEM_CDMA_RM_PROTOCOL_STU_III: STU-III service.
  *
  * Protocol of the Rm interface in modems with CDMA capabilities.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_cdma_rm_protocol >*/
     MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN             = 0,
@@ -1129,13 +1183,15 @@
  * @MM_MODEM_3GPP_REGISTRATION_STATE_DENIED: Registration denied.
  * @MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN: Unknown registration status.
  * @MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING: Registered on a roaming network.
- * @MM_MODEM_3GPP_REGISTRATION_STATE_HOME_SMS_ONLY: Registered for "SMS only", home network (applicable only when on LTE).
- * @MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING_SMS_ONLY: Registered for "SMS only", roaming network (applicable only when on LTE).
- * @MM_MODEM_3GPP_REGISTRATION_STATE_EMERGENCY_ONLY: Emergency services only.
- * @MM_MODEM_3GPP_REGISTRATION_STATE_HOME_CSFB_NOT_PREFERRED: Registered for "CSFB not preferred", home network (applicable only when on LTE).
- * @MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING_CSFB_NOT_PREFERRED: Registered for "CSFB not preferred", roaming network (applicable only when on LTE).
+ * @MM_MODEM_3GPP_REGISTRATION_STATE_HOME_SMS_ONLY: Registered for "SMS only", home network (applicable only when on LTE). Since 1.8.
+ * @MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING_SMS_ONLY: Registered for "SMS only", roaming network (applicable only when on LTE). Since 1.8.
+ * @MM_MODEM_3GPP_REGISTRATION_STATE_EMERGENCY_ONLY: Emergency services only. Since 1.8.
+ * @MM_MODEM_3GPP_REGISTRATION_STATE_HOME_CSFB_NOT_PREFERRED: Registered for "CSFB not preferred", home network (applicable only when on LTE). Since 1.8.
+ * @MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING_CSFB_NOT_PREFERRED: Registered for "CSFB not preferred", roaming network (applicable only when on LTE). Since 1.8.
  *
  * GSM registration code as defined in 3GPP TS 27.007.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_registration_state >*/
     MM_MODEM_3GPP_REGISTRATION_STATE_IDLE                       = 0,
@@ -1167,6 +1223,8 @@
  * requires a pin or unlock code. The facilities include the
  * personalizations (device locks) described in 3GPP spec TS 22.022,
  * and the PIN and PIN2 locks, which are SIM locks.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_facility >*/
     MM_MODEM_3GPP_FACILITY_NONE          = 0,
@@ -1187,7 +1245,9 @@
  * @MM_MODEM_3GPP_NETWORK_AVAILABILITY_CURRENT: Network is the current one.
  * @MM_MODEM_3GPP_NETWORK_AVAILABILITY_FORBIDDEN: Network is forbidden.
  *
- * Network availability status as defined in 3GPP TS 27.007 section 7.3
+ * Network availability status as defined in 3GPP TS 27.007 section 7.3.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_network_availability >*/
     MM_MODEM_3GPP_NETWORK_AVAILABILITY_UNKNOWN   = 0,
@@ -1205,6 +1265,8 @@
  *
  * Describes the current subscription status of the SIM.  This value is only available after the
  * modem attempts to register with the network.
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_subscription_state >*/
     MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN       = 0,
@@ -1221,6 +1283,8 @@
  * @MM_MODEM_3GPP_USSD_SESSION_STATE_USER_RESPONSE: The network is waiting for the client's response.
  *
  * State of a USSD session.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_ussd_session_state >*/
     MM_MODEM_3GPP_USSD_SESSION_STATE_UNKNOWN       = 0,
@@ -1238,6 +1302,8 @@
  * @MM_MODEM_3GPP_EPS_UE_MODE_OPERATION_CSPS_2: CS/PS mode 2 of operation: EPS and non-EPS, data-centric.
  *
  * UE mode of operation for EPS, as per 3GPP TS 24.301.
+ *
+ * Since: 1.8
  */
 typedef enum { /*< underscore_name=mm_modem_3gpp_eps_ue_mode_operation >*/
     MM_MODEM_3GPP_EPS_UE_MODE_OPERATION_UNKNOWN = 0,
@@ -1254,6 +1320,8 @@
  * @MM_FIRMWARE_IMAGE_TYPE_GOBI: Firmware image of Gobi devices.
  *
  * Type of firmware image.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_firmware_image_type >*/
     MM_FIRMWARE_IMAGE_TYPE_UNKNOWN = 0,
@@ -1269,6 +1337,8 @@
  * @MM_OMA_FEATURE_HANDS_FREE_ACTIVATION: Hands free activation service.
  *
  * Features that can be enabled or disabled in the OMA device management support.
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_oma_feature >*/
     MM_OMA_FEATURE_NONE                  = 0,
@@ -1289,6 +1359,8 @@
  * @MM_OMA_SESSION_TYPE_DEVICE_INITIATED_HANDS_FREE_ACTIVATION: Device-initiated hands free activation.
  *
  * Type of OMA device management session.
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_oma_session_type >*/
     MM_OMA_SESSION_TYPE_UNKNOWN                                = 0,
@@ -1317,6 +1389,8 @@
  * @MM_OMA_SESSION_STATE_COMPLETED: Session completed.
  *
  * State of the OMA device management session.
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_oma_session_state >*/
     MM_OMA_SESSION_STATE_FAILED                 = -1,
@@ -1343,6 +1417,8 @@
  * @MM_OMA_SESSION_STATE_FAILED_REASON_SESSION_CANCELLED: Session cancelled.
  *
  * Reason of failure in the OMA device management session.
+ *
+ * Since: 1.2
  */
 typedef enum { /*< underscore_name=mm_oma_session_state_failed_reason >*/
     MM_OMA_SESSION_STATE_FAILED_REASON_UNKNOWN               = 0,
@@ -1364,7 +1440,9 @@
  * @MM_CALL_STATE_WAITING: waiting call (by +CCWA AT command).
  * @MM_CALL_STATE_TERMINATED: call is terminated.
  *
- * State of Call
+ * State of Call.
+ *
+ * Since: 1.6
  */
 typedef enum { /*< underscore_name=mm_call_state >*/
     MM_CALL_STATE_UNKNOWN       = 0,
@@ -1386,11 +1464,13 @@
  * @MM_CALL_STATE_REASON_TERMINATED: Call is correctly terminated.
  * @MM_CALL_STATE_REASON_REFUSED_OR_BUSY: Remote peer is busy or refused call.
  * @MM_CALL_STATE_REASON_ERROR: Wrong number or generic network error.
- * @MM_CALL_STATE_REASON_AUDIO_SETUP_FAILED: Error setting up audio channel.
+ * @MM_CALL_STATE_REASON_AUDIO_SETUP_FAILED: Error setting up audio channel. Since 1.10.
  * @MM_CALL_STATE_REASON_TRANSFERRED: Call has been transferred. Since 1.12.
  * @MM_CALL_STATE_REASON_DEFLECTED: Call has been deflected to a new number. Since 1.12.
  *
  * Reason for the state change in the call.
+ *
+ * Since: 1.6
  */
 typedef enum { /*< underscore_name=mm_call_state_reason >*/
     MM_CALL_STATE_REASON_UNKNOWN            = 0,
@@ -1412,6 +1492,8 @@
  * @MM_CALL_DIRECTION_OUTGOING: call to network.
  *
  * Direction of the call.
+ *
+ * Since: 1.6
  */
 typedef enum { /*< underscore_name=mm_call_direction >*/
     MM_CALL_DIRECTION_UNKNOWN   = 0,
@@ -1426,6 +1508,8 @@
  * @MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC: Device supports QMI PDC based update.
  *
  * Type of firmware update method supported by the module.
+ *
+ * Since: 1.10
  */
 typedef enum { /*< underscore_name=mm_modem_firmware_update_method >*/
     MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE     = 0,
diff --git a/include/ModemManager-errors.h b/include/ModemManager-errors.h
index ed1def0..b0aa729 100644
--- a/include/ModemManager-errors.h
+++ b/include/ModemManager-errors.h
@@ -56,6 +56,8 @@
  * @MM_CORE_ERROR_EXISTS: Item already exists.
  *
  * Common errors that may be reported by ModemManager.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_core_error >*/
     MM_CORE_ERROR_FAILED       = 0,  /*< nick=Failed       >*/
@@ -129,10 +131,10 @@
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_NETWORK_FAILURE: Network failure.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_CONGESTION: Congestion.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_NOT_AUTHORIZED_FOR_CSG: GPRS not authorized for CSG. Since: 1.8.
- * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_INSUFFICIENT_RESOURCES: Insufficient resources.
- * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_MISSING_OR_UNKNOWN_APN: Missing or unknown APN.
+ * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_INSUFFICIENT_RESOURCES: Insufficient resources. Since 1.4.
+ * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_MISSING_OR_UNKNOWN_APN: Missing or unknown APN. Since 1.4.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_UNKNOWN_PDP_ADDRESS_OR_TYPE: Unknown PDP address or type. Since: 1.8.
- * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_USER_AUTHENTICATION_FAILED: User authentication failed.
+ * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_USER_AUTHENTICATION_FAILED: User authentication failed. Since 1.4.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_ACTIVATION_REJECTED_BY_GGSN_OR_GW: Activation rejected by GGSN or gateway. Since: 1.8.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_ACTIVATION_REJECTED_UNSPECIFIED: Activation rejected (reason unspecified). Since: 1.8.
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_SERVICE_OPTION_NOT_SUPPORTED: Service option not supported.
@@ -160,6 +162,8 @@
  * @MM_MOBILE_EQUIPMENT_ERROR_GPRS_REQUEST_REJECTED_BCM_VIOLATION: Request rejected (BCM violation). Since: 1.8.
  *
  * Enumeration of Mobile Equipment errors, as defined in 3GPP TS 07.07 version 7.8.0.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_mobile_equipment_error >*/
     /* General errors */
@@ -257,6 +261,8 @@
  * @MM_CONNECTION_ERROR_NO_ANSWER: No answer.
  *
  * Connection errors that may be reported by ModemManager.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_connection_error >*/
     MM_CONNECTION_ERROR_UNKNOWN     = 0, /*< nick=Unknown    >*/
@@ -276,9 +282,11 @@
  * @MM_SERIAL_ERROR_FLASH_FAILED: Could not flash the device.
  * @MM_SERIAL_ERROR_NOT_OPEN: The serial port is not open.
  * @MM_SERIAL_ERROR_PARSE_FAILED: The serial port specific parsing failed.
- * @MM_SERIAL_ERROR_FRAME_NOT_FOUND: The serial port reported that the frame marker wasn't found (e.g. for QCDM).
+ * @MM_SERIAL_ERROR_FRAME_NOT_FOUND: The serial port reported that the frame marker wasn't found (e.g. for QCDM). Since 1.6.
  *
  * Serial errors that may be reported by ModemManager.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_serial_error >*/
     MM_SERIAL_ERROR_UNKNOWN               = 0, /*< nick=Unknown            >*/
@@ -319,6 +327,8 @@
  * @MM_MESSAGE_ERROR_UNKNOWN: Unknown error.
  *
  * Enumeration of message errors, as defined in 3GPP TS 27.005 version 10 section 3.2.5.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_message_error >*/
     /* 0 -> 127 per 3GPP TS 24.011 [6] clause E.2 */
@@ -362,6 +372,8 @@
  * @MM_CDMA_ACTIVATION_ERROR_START_FAILED: API call for initial activation failed.
  *
  * CDMA Activation errors.
+ *
+ * Since: 1.0
  */
 typedef enum { /*< underscore_name=mm_cdma_activation_error >*/
     MM_CDMA_ACTIVATION_ERROR_NONE                           = 0, /*< nick=None                         >*/
diff --git a/include/ModemManager-tags.h b/include/ModemManager-tags.h
index 8c7a76d..633060b 100644
--- a/include/ModemManager-tags.h
+++ b/include/ModemManager-tags.h
@@ -36,6 +36,8 @@
  *
  * This is a port-specific tag added automatically when all other
  * ModemManager related tags have already been set.
+ *
+ * Since: 1.10
  */
 #define ID_MM_CANDIDATE "ID_MM_CANDIDATE"
 
@@ -56,6 +58,8 @@
  * property and can then be used in mmcli calls to refer unequivocally
  * to a specific device, regardless of its modem index, e.g.:
  *  $ mmcli --modem=UID ...
+ *
+ * Since: 1.10
  */
 #define ID_MM_PHYSDEV_UID "ID_MM_PHYSDEV_UID"
 
@@ -69,6 +73,8 @@
  *
  * This tag may also be specified in specific ports, e.g. when the modem
  * exposes a single platform port without any parent device.
+ *
+ * Since: 1.10
  */
 #define ID_MM_DEVICE_PROCESS "ID_MM_DEVICE_PROCESS"
 
@@ -83,6 +89,8 @@
  * applies to all filter types (including STRICT), and to all port types
  * (not only TTYs), and is associated to the
  * MM_FILTER_RULE_EXPLICIT_BLACKLIST rule.
+ *
+ * Since: 1.10
  */
 #define ID_MM_DEVICE_IGNORE "ID_MM_DEVICE_IGNORE"
 
@@ -93,6 +101,8 @@
  * in a device.
  *
  * This tag applies to all types of ports.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_IGNORE "ID_MM_PORT_IGNORE"
 
@@ -107,6 +117,8 @@
  * rule.
  *
  * This tag is ignored when the STRICT filter policy is used.
+ *
+ * Since: 1.12
  */
 #define ID_MM_TTY_BLACKLIST "ID_MM_TTY_BLACKLIST"
 
@@ -124,6 +136,8 @@
  * rule.
  *
  * This tag is ignored when the STRICT filter policy is used.
+ *
+ * Since: 1.12
  */
 #define ID_MM_TTY_MANUAL_SCAN_ONLY "ID_MM_TTY_MANUAL_SCAN_ONLY"
 
@@ -134,6 +148,8 @@
  * are AT ports to be used as primary control ports.
  *
  * This tag will also prevent QCDM probing on the port.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_TYPE_AT_PRIMARY "ID_MM_PORT_TYPE_AT_PRIMARY"
 
@@ -144,6 +160,8 @@
  * are AT ports to be used as secondary control ports.
  *
  * This tag will also prevent QCDM probing on the port.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_TYPE_AT_SECONDARY "ID_MM_PORT_TYPE_AT_SECONDARY"
 
@@ -154,6 +172,8 @@
  * are AT ports to be used as data ports exclusively.
  *
  * This tag will also prevent QCDM probing on the port.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_TYPE_AT_PPP "ID_MM_PORT_TYPE_AT_PPP"
 
@@ -164,6 +184,8 @@
  * are QCDM ports.
  *
  * The only purpose of this tag is to prevent AT probing in the port.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_TYPE_QCDM "ID_MM_PORT_TYPE_QCDM"
 
@@ -174,6 +196,8 @@
  * are GPS data ports where we expect to receive NMEA traces.
  *
  * This tag also prevents AT and QCDM probing in the port.
+ *
+ * Since: 1.10
  */
 #define ID_MM_PORT_TYPE_GPS "ID_MM_PORT_TYPE_GPS"
 
@@ -184,6 +208,8 @@
  * are audio ports.
  *
  * This tag also prevents AT and QCDM probing in the port.
+ *
+ * Since: 1.12
  */
 #define ID_MM_PORT_TYPE_AUDIO "ID_MM_PORT_TYPE_AUDIO"
 
@@ -198,6 +224,8 @@
  * The value of the tag should be the number of bauds per second to
  * use when talking to the port, e.g. "115200". If not given, the
  * default of 57600bps is assumed.
+ *
+ * Since: 1.10
  */
 #define ID_MM_TTY_BAUDRATE "ID_MM_TTY_BAUDRATE"
 
@@ -212,6 +240,8 @@
  * 'rts-cts', and must be a flow control value supported by the device
  * where it's configured. If not given, it is assumed that the TTYs
  * don't require any specific flow control setting in command mode.
+ *
+ * Since: 1.10
  */
 #define ID_MM_TTY_FLOW_CONTROL "ID_MM_TTY_FLOW_CONTROL"
 
diff --git a/include/ModemManager-version.h.in b/include/ModemManager-version.h.in
index 695a1b0..b3b2000 100644
--- a/include/ModemManager-version.h.in
+++ b/include/ModemManager-version.h.in
@@ -33,6 +33,8 @@
  *
  * Evaluates to the major version number of ModemManager which this source
  * is compiled against.
+ *
+ * Since: 1.0
  */
 #define MM_MAJOR_VERSION (@MM_MAJOR_VERSION@)
 
@@ -41,6 +43,8 @@
  *
  * Evaluates to the minor version number of ModemManager which this source
  * is compiled against.
+ *
+ * Since: 1.0
  */
 #define MM_MINOR_VERSION (@MM_MINOR_VERSION@)
 
@@ -49,6 +53,8 @@
  *
  * Evaluates to the micro version number of ModemManager which this source
  * compiled against.
+ *
+ * Since: 1.0
  */
 #define MM_MICRO_VERSION (@MM_MICRO_VERSION@)
 
@@ -62,6 +68,8 @@
  *
  * Returns: %TRUE if the version of the ModemManager header files
  * is the same as or newer than the passed-in version.
+ *
+ * Since: 1.0
  */
 #define MM_CHECK_VERSION(major,minor,micro)                         \
     (MM_MAJOR_VERSION > (major) ||                                  \
diff --git a/include/ModemManager.h b/include/ModemManager.h
index 822a2e9..530bd21 100644
--- a/include/ModemManager.h
+++ b/include/ModemManager.h
@@ -1,6 +1,6 @@
 /*
  * ModemManager Interface Specification
- * version 0.8
+ * version 1.x
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml b/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
index 1e45cbb..848d55c 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Firmware.xml
@@ -134,7 +134,7 @@
             <listitem>
               <para>
                 The following settings are mandatory as long as the reported update method is not
-                <term><link linkend="MM-MODEM-FIRMWARE-UPDATE-METHOD-NONE:CAPS">MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE</link></term>.
+                <link linkend="MM-MODEM-FIRMWARE-UPDATE-METHOD-NONE:CAPS">MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE</link>.
               </para>
               <variablelist>
                 <varlistentry><term><literal>"device-ids"</literal></term>
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Voice.xml b/introspection/org.freedesktop.ModemManager1.Modem.Voice.xml
index 698b8e3..87bc7d7 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Voice.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Voice.xml
@@ -55,9 +55,10 @@
         @properties: Call properties from the <link linkend="gdbus-org.freedesktop.ModemManager1.Call">Call D-Bus interface</link>.
         @path: The object path of the new call object.
 
-        Creates a new call object.
+        Creates a new call object for a new outgoing call.
 
-        The '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Call.Number">Number</link>' is mandatory
+        The '<link linkend="gdbus-property-org-freedesktop-ModemManager1-Call.Number">Number</link>' is the only
+        expected property to set by the user.
     -->
     <method name="CreateCall">
       <arg name="properties" type="a{sv}" direction="in" />
@@ -182,7 +183,7 @@
         A flag indicating whether emergency calls are the only allowed ones.
 
         If this flag is set, users should only attempt voice calls to
-	emergency numbers, as standard voice calls will likely fail.
+        emergency numbers, as standard voice calls will likely fail.
     -->
     <property name="EmergencyOnly" type="b" access="read" />
 
diff --git a/introspection/org.freedesktop.ModemManager1.Sim.xml b/introspection/org.freedesktop.ModemManager1.Sim.xml
index 1db9b66..ceba262 100644
--- a/introspection/org.freedesktop.ModemManager1.Sim.xml
+++ b/introspection/org.freedesktop.ModemManager1.Sim.xml
@@ -103,7 +103,7 @@
         List of emergency numbers programmed in the SIM card.
 
         These numbers should be treated as numbers for emergency calls in
-	addition to 112 and 911.
+        addition to 112 and 911.
     -->
     <property name="EmergencyNumbers" type="as" access="read" />
 
diff --git a/libmm-glib/mm-bearer-ip-config.c b/libmm-glib/mm-bearer-ip-config.c
index 8be59ac..99e4f3a 100644
--- a/libmm-glib/mm-bearer-ip-config.c
+++ b/libmm-glib/mm-bearer-ip-config.c
@@ -60,6 +60,8 @@
  * Gets the IP method to be used with this bearer.
  *
  * Returns: a #MMBearerIpMethod.
+ *
+ * Since: 1.0
  */
 MMBearerIpMethod
 mm_bearer_ip_config_get_method (MMBearerIpConfig *self)
@@ -69,6 +71,9 @@
     return self->priv->method;
 }
 
+/**
+ * mm_bearer_ip_config_set_method: (skip)
+ */
 void
 mm_bearer_ip_config_set_method (MMBearerIpConfig *self,
                                 MMBearerIpMethod method)
@@ -86,7 +91,10 @@
  *
  * Gets the IP address to be used with this bearer.
  *
- * Returns: a string with the IP address, or #NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: a string with the IP address, or #NULL if unknown. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_ip_config_get_address (MMBearerIpConfig *self)
@@ -96,6 +104,9 @@
     return self->priv->address;
 }
 
+/**
+ * mm_bearer_ip_config_set_address: (skip)
+ */
 void
 mm_bearer_ip_config_set_address (MMBearerIpConfig *self,
                                  const gchar *address)
@@ -115,6 +126,8 @@
  * Gets the network prefix to be used with this bearer.
  *
  * Returns: the network prefix.
+ *
+ * Since: 1.0
  */
 guint
 mm_bearer_ip_config_get_prefix (MMBearerIpConfig *self)
@@ -124,6 +137,9 @@
     return self->priv->prefix;
 }
 
+/**
+ * mm_bearer_ip_config_set_prefix: (skip)
+ */
 void
 mm_bearer_ip_config_set_prefix (MMBearerIpConfig *self,
                                 guint prefix)
@@ -141,7 +157,10 @@
  *
  * Gets the list of IP addresses of DNS servers to be used with this bearer.
  *
- * Returns: (transfer none) (array zero-terminated=1): a NULL-terminated array of strings. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none) (array zero-terminated=1): a %NULL-terminated array
+ * of strings. Do not free the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar **
 mm_bearer_ip_config_get_dns (MMBearerIpConfig *self)
@@ -151,6 +170,9 @@
     return (const gchar **)self->priv->dns;
 }
 
+/**
+ * mm_bearer_ip_config_set_dns: (skip)
+ */
 void
 mm_bearer_ip_config_set_dns (MMBearerIpConfig *self,
                              const gchar **dns)
@@ -169,7 +191,10 @@
  *
  * Gets the IP address of the gateway to be used with this bearer.
  *
- * Returns: a string with the IP address, or #NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: a string with the IP address, or #NULL if unknown. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_ip_config_get_gateway (MMBearerIpConfig *self)
@@ -179,6 +204,9 @@
     return self->priv->gateway;
 }
 
+/**
+ * mm_bearer_ip_config_set_gateway: (skip)
+ */
 void
 mm_bearer_ip_config_set_gateway (MMBearerIpConfig *self,
                                  const gchar *gateway)
@@ -198,6 +226,8 @@
  * Gets the MTU to be used with this bearer.
  *
  * Returns: the MTU.
+ *
+ * Since: 1.4
  */
 guint
 mm_bearer_ip_config_get_mtu (MMBearerIpConfig *self)
@@ -207,6 +237,9 @@
     return self->priv->mtu;
 }
 
+/**
+ * mm_bearer_ip_config_set_mtu: (skip)
+ */
 void
 mm_bearer_ip_config_set_mtu (MMBearerIpConfig *self,
                              guint mtu)
@@ -218,6 +251,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_ip_config_get_dictionary: (skip)
+ */
 GVariant *
 mm_bearer_ip_config_get_dictionary (MMBearerIpConfig *self)
 {
@@ -285,6 +321,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_ip_config_new_from_dictionary: (skip)
+ */
 MMBearerIpConfig *
 mm_bearer_ip_config_new_from_dictionary (GVariant *dictionary,
                                          GError **error)
@@ -368,33 +407,9 @@
 /*****************************************************************************/
 
 /**
- * mm_bearer_ip_config_dup:
- * @orig: a #MMBearerIpConfig
- *
- * Creates a copy of @orig.
- *
- * Returns: (transfer full): a newly created #MMBearerIpConfig
+ * mm_bearer_ip_config_new: (skip)
  */
 MMBearerIpConfig *
-mm_bearer_ip_config_dup (MMBearerIpConfig *orig)
-{
-    GVariant *dict;
-    MMBearerIpConfig *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_BEARER_IP_CONFIG (orig), NULL);
-
-    dict = mm_bearer_ip_config_get_dictionary (orig);
-    copy = mm_bearer_ip_config_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
-MMBearerIpConfig *
 mm_bearer_ip_config_new (void)
 {
     return (MM_BEARER_IP_CONFIG (
diff --git a/libmm-glib/mm-bearer-ip-config.h b/libmm-glib/mm-bearer-ip-config.h
index 551ff70..861b9f7 100644
--- a/libmm-glib/mm-bearer-ip-config.h
+++ b/libmm-glib/mm-bearer-ip-config.h
@@ -77,8 +77,6 @@
 MMBearerIpConfig *mm_bearer_ip_config_new_from_dictionary (GVariant *dictionary,
                                                            GError **error);
 
-MMBearerIpConfig *mm_bearer_ip_config_dup (MMBearerIpConfig *orig);
-
 void mm_bearer_ip_config_set_method  (MMBearerIpConfig *self,
                                       MMBearerIpMethod ip_method);
 void mm_bearer_ip_config_set_address (MMBearerIpConfig *self,
diff --git a/libmm-glib/mm-bearer-properties.c b/libmm-glib/mm-bearer-properties.c
index dfddeff..3d1b45b 100644
--- a/libmm-glib/mm-bearer-properties.c
+++ b/libmm-glib/mm-bearer-properties.c
@@ -70,6 +70,8 @@
  * @apn: Name of the access point.
  *
  * Sets the name of the access point to use when connecting.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_apn (MMBearerProperties *self,
@@ -87,7 +89,10 @@
  *
  * Gets the name of the access point to use when connecting.
  *
- * Returns: (transfer none): the access point, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the access point, or #NULL if not set. Do not free
+ * the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_properties_get_apn (MMBearerProperties *self)
@@ -102,9 +107,13 @@
 /**
  * mm_bearer_properties_set_allowed_auth:
  * @self: a #MMBearerProperties.
- * @allowed_auth: a bitmask of #MMBearerAllowedAuth values. %MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.
+ * @allowed_auth: a bitmask of #MMBearerAllowedAuth values.
+ *  %MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default
+ *  method.
  *
  * Sets the authentication method to use.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_allowed_auth (MMBearerProperties *self,
@@ -121,7 +130,10 @@
  *
  * Gets the authentication methods allowed in the connection.
  *
- * Returns: a bitmask of #MMBearerAllowedAuth values, or %MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.
+ * Returns: a bitmask of #MMBearerAllowedAuth values, or
+ * %MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.
+ *
+ * Since: 1.0
  */
 MMBearerAllowedAuth
 mm_bearer_properties_get_allowed_auth (MMBearerProperties *self)
@@ -139,6 +151,8 @@
  * @user: the username
  *
  * Sets the username used to authenticate with the access point.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_user (MMBearerProperties *self,
@@ -156,7 +170,10 @@
  *
  * Gets the username used to authenticate with the access point.
  *
- * Returns: (transfer none): the username, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the username, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_properties_get_user (MMBearerProperties *self)
@@ -174,6 +191,8 @@
  * @password: the password
  *
  * Sets the password used to authenticate with the access point.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_password (MMBearerProperties *self,
@@ -191,7 +210,10 @@
  *
  * Gets the password used to authenticate with the access point.
  *
- * Returns: (transfer none): the password, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the password, or #NULL if not set. Do not free
+ * the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_properties_get_password (MMBearerProperties *self)
@@ -209,6 +231,8 @@
  * @ip_type: a #MMBearerIpFamily.
  *
  * Sets the IP type to use.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_ip_type (MMBearerProperties *self,
@@ -226,6 +250,8 @@
  * Sets the IP type to use.
  *
  * Returns: a #MMBearerIpFamily.
+ *
+ * Since: 1.0
  */
 MMBearerIpFamily
 mm_bearer_properties_get_ip_type (MMBearerProperties *self)
@@ -244,6 +270,8 @@
  *
  * Sets the flag to indicate whether roaming is allowed or not in the
  * connection.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_allow_roaming (MMBearerProperties *self,
@@ -262,6 +290,8 @@
  * Checks whether roaming is allowed in the connection.
  *
  * Returns: %TRUE if roaming is allowed, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_properties_get_allow_roaming (MMBearerProperties *self)
@@ -282,6 +312,7 @@
  *
  * Sets the number to use when performing the connection.
  *
+ * Since: 1.0
  * Deprecated: 1.10.0. The number setting is not used anywhere, and therefore
  * it doesn't make sense to expose it in the ModemManager interface.
  */
@@ -300,8 +331,10 @@
  *
  * Gets the number to use when performing the connection.
  *
- * Returns: (transfer none): the number, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the number, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
  *
+ * Since: 1.0
  * Deprecated: 1.10.0. The number setting is not used anywhere, and therefore
  * it doesn't make sense to expose it in the ModemManager interface.
  */
@@ -324,6 +357,8 @@
  * @protocol: a #MMModemCdmaRmProtocol.
  *
  * Sets the RM protocol to use in the CDMA connection.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_properties_set_rm_protocol (MMBearerProperties *self,
@@ -341,6 +376,8 @@
  * Gets the RM protocol requested to use in the CDMA connection.
  *
  * Returns: a #MMModemCdmaRmProtocol.
+ *
+ * Since: 1.0
  */
 MMModemCdmaRmProtocol
 mm_bearer_properties_get_rm_protocol (MMBearerProperties *self)
@@ -352,6 +389,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_properties_get_dictionary: (skip)
+ */
 GVariant *
 mm_bearer_properties_get_dictionary (MMBearerProperties *self)
 {
@@ -412,6 +452,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_properties_consume_string: (skip)
+ */
 gboolean
 mm_bearer_properties_consume_string (MMBearerProperties *self,
                                      const gchar *key,
@@ -496,6 +539,9 @@
                                                 &ctx->error);
 }
 
+/**
+ * mm_bearer_properties_new_from_string: (skip)
+ */
 MMBearerProperties *
 mm_bearer_properties_new_from_string (const gchar *str,
                                       GError **error)
@@ -521,6 +567,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_properties_consume_variant: (skip)
+ */
 gboolean
 mm_bearer_properties_consume_variant (MMBearerProperties *properties,
                                       const gchar *key,
@@ -568,6 +617,9 @@
     return TRUE;
 }
 
+/**
+ * mm_bearer_properties_new_from_dictionary: (skip)
+ */
 MMBearerProperties *
 mm_bearer_properties_new_from_dictionary (GVariant *dictionary,
                                           GError **error)
@@ -616,32 +668,8 @@
 /*****************************************************************************/
 
 /**
- * mm_bearer_properties_dup:
- * @orig: a #MMBearerProperties
- *
- * Creates a copy of @orig.
- *
- * Returns: (transfer full): a newly created #MMBearerProperties
+ * mm_bearer_properties_cmp: (skip)
  */
-MMBearerProperties *
-mm_bearer_properties_dup (MMBearerProperties *orig)
-{
-    GVariant *dict;
-    MMBearerProperties *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_BEARER_PROPERTIES (orig), NULL);
-
-    dict = mm_bearer_properties_get_dictionary (orig);
-    copy = mm_bearer_properties_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
 gboolean
 mm_bearer_properties_cmp (MMBearerProperties *a,
                           MMBearerProperties *b)
@@ -664,6 +692,8 @@
  * Creates a new empty #MMBearerProperties.
  *
  * Returns: (transfer full): a #MMBearerProperties. The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMBearerProperties *
 mm_bearer_properties_new (void)
diff --git a/libmm-glib/mm-bearer-properties.h b/libmm-glib/mm-bearer-properties.h
index 6a302cf..8d8f000 100644
--- a/libmm-glib/mm-bearer-properties.h
+++ b/libmm-glib/mm-bearer-properties.h
@@ -104,8 +104,6 @@
 MMBearerProperties *mm_bearer_properties_new_from_dictionary (GVariant *dictionary,
                                                               GError **error);
 
-MMBearerProperties *mm_bearer_properties_dup (MMBearerProperties *orig);
-
 gboolean mm_bearer_properties_consume_string (MMBearerProperties *self,
                                               const gchar *key,
                                               const gchar *value,
diff --git a/libmm-glib/mm-bearer-stats.c b/libmm-glib/mm-bearer-stats.c
index f2be488..df499ca 100644
--- a/libmm-glib/mm-bearer-stats.c
+++ b/libmm-glib/mm-bearer-stats.c
@@ -53,6 +53,8 @@
  * Gets the duration of the current connection, in seconds.
  *
  * Returns: a #guint.
+ *
+ * Since: 1.6
  */
 guint
 mm_bearer_stats_get_duration (MMBearerStats *self)
@@ -62,6 +64,9 @@
     return self->priv->duration;
 }
 
+/**
+ * mm_bearer_stats_set_duration: (skip)
+ */
 void
 mm_bearer_stats_set_duration (MMBearerStats *self,
                               guint duration)
@@ -80,6 +85,8 @@
  * Gets the number of bytes received without error in the connection.
  *
  * Returns: a #guint64.
+ *
+ * Since: 1.6
  */
 guint64
 mm_bearer_stats_get_rx_bytes (MMBearerStats *self)
@@ -89,6 +96,9 @@
     return self->priv->rx_bytes;
 }
 
+/**
+ * mm_bearer_stats_set_rx_bytes: (skip)
+ */
 void
 mm_bearer_stats_set_rx_bytes (MMBearerStats *self,
                               guint64 bytes)
@@ -107,6 +117,8 @@
  * Gets the number of bytes transmitted without error in the connection.
  *
  * Returns: a #guint64.
+ *
+ * Since: 1.6
  */
 guint64
 mm_bearer_stats_get_tx_bytes (MMBearerStats *self)
@@ -116,6 +128,9 @@
     return self->priv->tx_bytes;
 }
 
+/**
+ * mm_bearer_stats_set_tx_bytes: (skip)
+ */
 void
 mm_bearer_stats_set_tx_bytes (MMBearerStats *self,
                               guint64 bytes)
@@ -127,6 +142,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_stats_get_dictionary: (skip)
+ */
 GVariant *
 mm_bearer_stats_get_dictionary (MMBearerStats *self)
 {
@@ -154,6 +172,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_stats_new_from_dictionary: (skip)
+ */
 MMBearerStats *
 mm_bearer_stats_new_from_dictionary (GVariant *dictionary,
                                      GError **error)
@@ -201,6 +222,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_bearer_stats_new: (skip)
+ */
 MMBearerStats *
 mm_bearer_stats_new (void)
 {
diff --git a/libmm-glib/mm-bearer.c b/libmm-glib/mm-bearer.c
index 1195ae0..d5812e2 100644
--- a/libmm-glib/mm-bearer.c
+++ b/libmm-glib/mm-bearer.c
@@ -69,6 +69,8 @@
  * Gets the DBus path of the #MMBearer object.
  *
  * Returns: (transfer none): The DBus path of the #MMBearer object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_get_path (MMBearer *self)
@@ -85,7 +87,10 @@
  *
  * Gets a copy of the DBus path of the #MMBearer object.
  *
- * Returns: (transfer full): The DBus path of the #MMBearer object. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMBearer object. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_bearer_dup_path (MMBearer *self)
@@ -116,7 +121,10 @@
  * @self was constructed. Use mm_bearer_dup_interface() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): The name of the interface, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The name of the interface, or %NULL if it couldn't
+ * be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_bearer_get_interface (MMBearer *self)
@@ -131,11 +139,14 @@
  * mm_bearer_dup_interface:
  * @self: A #MMBearer.
  *
- * Gets a copy of the operating system name for the network data interface that provides
- * packet data using this #MMBearer. This will only be available once the #MMBearer
- * is in connected state.
+ * Gets a copy of the operating system name for the network data interface that
+ * provides packet data using this #MMBearer. This will only be available once
+ * the #MMBearer is in connected state.
  *
- * Returns: (transfer full): The name of the interface, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The name of the interface, or %NULL if it couldn't
+ * be retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_bearer_dup_interface (MMBearer *self)
@@ -156,6 +167,8 @@
  * communication is possible.
  *
  * Returns: %TRUE if the #MMBearer is connected, #FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_get_connected (MMBearer *self)
@@ -171,10 +184,13 @@
  * mm_bearer_get_suspended:
  * @self: A #MMBearer.
  *
- * Checks whether or not the #MMBearer is suspended (but not deactivated) while the
- * device is handling other communications, like a voice call.
+ * Checks whether or not the #MMBearer is suspended (but not deactivated) while
+ * the device is handling other communications, like a voice call.
  *
- * Returns: %TRUE if packet data service is suspended in the #MMBearer, #FALSE otherwise.
+ * Returns: %TRUE if packet data service is suspended in the #MMBearer, #FALSE
+ * otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_get_suspended (MMBearer *self)
@@ -193,6 +209,8 @@
  * Gets the maximum time to wait for the bearer to retrieve a valid IP address.
  *
  * Returns: The IP timeout, or 0 if no specific one given.
+ *
+ * Since: 1.0
  */
 guint
 mm_bearer_get_ip_timeout (MMBearer *self)
@@ -211,6 +229,8 @@
  * Gets the type of bearer.
  *
  * Returns: a #MMBearerType.
+ *
+ * Since: 1.0
  */
 MMBearerType
 mm_bearer_get_bearer_type (MMBearer *self)
@@ -296,7 +316,10 @@
  * mm_bearer_get_ipv4_config() again to get a new #MMBearerIpConfig with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMBearerIpConfig that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMBearerIpConfig that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.0
  */
 MMBearerIpConfig *
 mm_bearer_get_ipv4_config (MMBearer *self)
@@ -321,7 +344,10 @@
  * @self was constructed. Use mm_bearer_get_ipv4_config() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): A #MMBearerIpConfig. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMBearerIpConfig. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 MMBearerIpConfig *
 mm_bearer_peek_ipv4_config (MMBearer *self)
@@ -408,7 +434,10 @@
  * mm_bearer_get_ipv6_config() again to get a new #MMBearerIpConfig with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMBearerIpConfig that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMBearerIpConfig that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.0
  */
 MMBearerIpConfig *
 mm_bearer_get_ipv6_config (MMBearer *self)
@@ -433,7 +462,10 @@
  * @self was constructed. Use mm_bearer_get_ipv6_config() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): A #MMBearerIpConfig. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMBearerIpConfig. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 MMBearerIpConfig *
 mm_bearer_peek_ipv6_config (MMBearer *self)
@@ -520,7 +552,10 @@
  * mm_bearer_get_properties() again to get a new #MMBearerProperties with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMBearerProperties that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMBearerProperties that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.0
  */
 MMBearerProperties *
 mm_bearer_get_properties (MMBearer *self)
@@ -545,7 +580,10 @@
  * @self was constructed. Use mm_bearer_get_properties() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): A #MMBearerProperties. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMBearerProperties. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 MMBearerProperties *
 mm_bearer_peek_properties (MMBearer *self)
@@ -631,7 +669,10 @@
  * mm_bearer_get_stats() again to get a new #MMBearerStats with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMBearerStats that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMBearerStats that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.6
  */
 MMBearerStats *
 mm_bearer_get_stats (MMBearer *self)
@@ -656,7 +697,10 @@
  * @self was constructed. Use mm_bearer_get_stats() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): A #MMBearerStats. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMBearerStats. Do not free the returned value,
+ * it belongs to @self.
+ *
+ * Since: 1.6
  */
 MMBearerStats *
 mm_bearer_peek_stats (MMBearer *self)
@@ -672,12 +716,15 @@
 /**
  * mm_bearer_connect_finish:
  * @self: A #MMBearer.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_bearer_connect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_bearer_connect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_bearer_connect().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_connect_finish (MMBearer *self,
@@ -699,10 +746,14 @@
  * Asynchronously requests activation of a packet data connection with the
  * network using this #MMBearer properties.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_bearer_connect_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_bearer_connect_finish() to get the result of the operation.
  *
  * See mm_bearer_connect_sync() for the synchronous, blocking version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_connect (MMBearer *self,
@@ -728,6 +779,8 @@
  * See mm_bearer_connect() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_connect_sync (MMBearer *self,
@@ -745,15 +798,22 @@
  * mm_bearer_disconnect:
  * @self: A #MMBearer.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Synchronously requests disconnection and deactivation of the packet data connection.
+ * Synchronously requests disconnection and deactivation of the packet data
+ * connection.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_bearer_disconnect_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_bearer_disconnect_finish() to get the result of the operation.
  *
- * See mm_bearer_disconnect_sync() for the synchronous, blocking version of this method.
+ * See mm_bearer_disconnect_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_bearer_disconnect (MMBearer *self,
@@ -769,12 +829,15 @@
 /**
  * mm_bearer_disconnect_finish:
  * @self: A #MMBearer.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_bearer_disconnect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_bearer_disconnect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_bearer_disconnect().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_disconnect_finish (MMBearer *self,
@@ -792,12 +855,15 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously requests disconnection and deactivation of the packet data connection.
+ * Synchronously requests disconnection and deactivation of the packet data
+ * connection.
  *
  * The calling thread is blocked until a reply is received.
  * See mm_bearer_disconnect() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_bearer_disconnect_sync (MMBearer *self,
diff --git a/libmm-glib/mm-call-audio-format.c b/libmm-glib/mm-call-audio-format.c
index a5e5126..54debb6 100644
--- a/libmm-glib/mm-call-audio-format.c
+++ b/libmm-glib/mm-call-audio-format.c
@@ -51,7 +51,10 @@
  * Gets the encoding of the audio format.  For example, "pcm" for PCM-encoded
  * audio.
  *
- * Returns: a string with the encoding, or #NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: a string with the encoding, or #NULL if unknown. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_call_audio_format_get_encoding (MMCallAudioFormat *self)
@@ -61,6 +64,9 @@
     return self->priv->encoding;
 }
 
+/**
+ * mm_call_audio_format_set_encoding: (skip)
+ */
 void
 mm_call_audio_format_set_encoding (MMCallAudioFormat *self,
                                    const gchar *encoding)
@@ -80,7 +86,10 @@
  * Gets the resolution of the audio format.  For example, "s16le" for signed
  * 16-bit little-endian audio sampling resolution.
  *
- * Returns: a string with the resolution, or #NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: a string with the resolution, or #NULL if unknown. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_call_audio_format_get_resolution (MMCallAudioFormat *self)
@@ -90,6 +99,9 @@
     return self->priv->resolution;
 }
 
+/**
+ * mm_call_audio_format_set_resolution: (skip)
+ */
 void
 mm_call_audio_format_set_resolution (MMCallAudioFormat *self,
                                      const gchar *resolution)
@@ -110,6 +122,8 @@
  * sampling rate.
  *
  * Returns: the sampling rate, or 0 if unknown.
+ *
+ * Since: 1.10
  */
 guint
 mm_call_audio_format_get_rate (MMCallAudioFormat *self)
@@ -119,6 +133,9 @@
     return self->priv->rate;
 }
 
+/**
+ * mm_call_audio_format_set_rate: (skip)
+ */
 void
 mm_call_audio_format_set_rate (MMCallAudioFormat *self,
                                guint rate)
@@ -130,6 +147,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_call_audio_format_get_dictionary: (skip)
+ */
 GVariant *
 mm_call_audio_format_get_dictionary (MMCallAudioFormat *self)
 {
@@ -165,6 +185,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_call_audio_format_new_from_dictionary: (skip)
+ */
 MMCallAudioFormat *
 mm_call_audio_format_new_from_dictionary (GVariant *dictionary,
                                           GError **error)
@@ -213,33 +236,9 @@
 /*****************************************************************************/
 
 /**
- * mm_call_audio_format_dup:
- * @orig: a #MMCallAudioFormat
- *
- * Creates a copy of @orig.
- *
- * Returns: (transfer full): a newly created #MMCallAudioFormat
+ * mm_call_audio_format_new: (skip)
  */
 MMCallAudioFormat *
-mm_call_audio_format_dup (MMCallAudioFormat *orig)
-{
-    GVariant *dict;
-    MMCallAudioFormat *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_CALL_AUDIO_FORMAT (orig), NULL);
-
-    dict = mm_call_audio_format_get_dictionary (orig);
-    copy = mm_call_audio_format_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
-MMCallAudioFormat *
 mm_call_audio_format_new (void)
 {
     return (MM_CALL_AUDIO_FORMAT (
diff --git a/libmm-glib/mm-call-audio-format.h b/libmm-glib/mm-call-audio-format.h
index bd931bc..0537884 100644
--- a/libmm-glib/mm-call-audio-format.h
+++ b/libmm-glib/mm-call-audio-format.h
@@ -74,8 +74,6 @@
 MMCallAudioFormat *mm_call_audio_format_new_from_dictionary (GVariant *dictionary,
                                                              GError **error);
 
-MMCallAudioFormat *mm_call_audio_format_dup (MMCallAudioFormat *orig);
-
 void mm_call_audio_format_set_encoding   (MMCallAudioFormat *self,
                                           const gchar *encoding);
 void mm_call_audio_format_set_resolution (MMCallAudioFormat *self,
diff --git a/libmm-glib/mm-call-properties.c b/libmm-glib/mm-call-properties.c
index 04f4a61..547fe86 100644
--- a/libmm-glib/mm-call-properties.c
+++ b/libmm-glib/mm-call-properties.c
@@ -36,16 +36,10 @@
 
 G_DEFINE_TYPE (MMCallProperties, mm_call_properties, G_TYPE_OBJECT)
 
-#define PROPERTY_NUMBER       "number"
-#define PROPERTY_DIRECTION    "direction"
-#define PROPERTY_STATE_REASON "state-reason"
-#define PROPERTY_STATE        "state"
+#define PROPERTY_NUMBER "number"
 
 struct _MMCallPropertiesPrivate {
     gchar *number;
-    MMCallDirection direction;
-    MMCallState state;
-    MMCallStateReason state_reason;
 };
 
 /*****************************************************************************/
@@ -56,6 +50,8 @@
  * @text: The number to set, in UTF-8.
  *
  * Sets the call number.
+ *
+ * Since: 1.6
  */
 void
 mm_call_properties_set_number (MMCallProperties *self,
@@ -73,7 +69,10 @@
  *
  * Gets the number, in UTF-8.
  *
- * Returns: the call number, or %NULL if it doesn't contain any (anonymous caller). Do not free the returned value, it is owned by @self.
+ * Returns: the call number, or %NULL if it doesn't contain any (anonymous
+ * caller). Do not free the returned value, it is owned by @self.
+ *
+ * Since: 1.6
  */
 const gchar *
 mm_call_properties_get_number (MMCallProperties *self)
@@ -85,20 +84,25 @@
 
 /*****************************************************************************/
 
+#ifndef MM_DISABLE_DEPRECATED
+
 /**
  * mm_call_properties_set_direction:
  * @self: A #MMCallProperties.
  * @direction: the call direction
  *
- * Sets the call direction
+ * Sets the call direction.
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the direction of the call, as
+ * it is implicit (outgoing always). Anyway, this parameter has always been
+ * ignored during the new call creation processing.
  */
 void
 mm_call_properties_set_direction (MMCallProperties *self,
                                   MMCallDirection direction)
 {
-    g_return_if_fail (MM_IS_CALL_PROPERTIES (self));
-
-    self->priv->direction = direction;
+    /* NO-OP */
 }
 
 /**
@@ -108,13 +112,17 @@
  * Gets the call direction.
  *
  * Returns: the call direction.
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the direction of the call, as
+ * it is implicit (outgoing always). This parameter has always been ignored
+ * during the new call creation processing.
  */
 MMCallDirection
 mm_call_properties_get_direction (MMCallProperties *self)
 {
-    g_return_val_if_fail (MM_IS_CALL_PROPERTIES (self), MM_CALL_DIRECTION_UNKNOWN);
-
-    return self->priv->direction;
+    /* NO-OP */
+    return MM_CALL_DIRECTION_UNKNOWN;
 }
 
 /*****************************************************************************/
@@ -125,14 +133,17 @@
  * @state: the call state
  *
  * Sets the call state
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the state of the call before
+ * the call is created. This parameter has always been ignored during the new
+ * call creation processing.
  */
 void
 mm_call_properties_set_state (MMCallProperties *self,
                               MMCallState state)
 {
-    g_return_if_fail (MM_IS_CALL_PROPERTIES (self));
-
-    self->priv->state = state;
+    /* NO-OP */
 }
 
 /**
@@ -142,13 +153,17 @@
  * Gets the call state.
  *
  * Returns: the call state.
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the state of the call before
+ * the call is created. This parameter has always been ignored during the new
+ * call creation processing.
  */
 MMCallState
 mm_call_properties_get_state (MMCallProperties *self)
 {
-    g_return_val_if_fail (MM_IS_CALL_PROPERTIES (self), MM_CALL_STATE_UNKNOWN);
-
-    return self->priv->state;
+    /* NO-OP */
+    return MM_CALL_STATE_UNKNOWN;
 }
 
 /*****************************************************************************/
@@ -156,17 +171,20 @@
 /**
  * mm_call_properties_set_state_reason:
  * @self: A #MMCallProperties.
- * @state_reason: the call state_reason
+ * @state_reason: the call state reason.
  *
- * Sets the call state reason
+ * Sets the call state reason.
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the state reason of the call
+ * before the call is created. This parameter has always been ignored during the
+ * new call creation processing.
  */
 void
 mm_call_properties_set_state_reason (MMCallProperties *self,
                                      MMCallStateReason state_reason)
 {
-    g_return_if_fail (MM_IS_CALL_PROPERTIES (self));
-
-    self->priv->state_reason = state_reason;
+    /* NO-OP */
 }
 
 /**
@@ -176,17 +194,26 @@
  * Gets the call state reason.
  *
  * Returns: the call state reason.
+ *
+ * Since: 1.6
+ * Deprecated: 1.12: the user should not specify the state reason of the call
+ * before the call is created. This parameter has always been ignored during the
+ * new call creation processing.
  */
 MMCallStateReason
 mm_call_properties_get_state_reason (MMCallProperties *self)
 {
-    g_return_val_if_fail (MM_IS_CALL_PROPERTIES (self), MM_CALL_STATE_REASON_UNKNOWN);
-
-    return self->priv->state_reason;
+    /* NO-OP */
+    return MM_CALL_STATE_REASON_UNKNOWN;
 }
 
+#endif /* MM_DISABLE_DEPRECATED */
+
 /*****************************************************************************/
 
+/*
+ * mm_call_properties_get_dictionary: (skip)
+ */
 GVariant *
 mm_call_properties_get_dictionary (MMCallProperties *self)
 {
@@ -206,23 +233,6 @@
                                PROPERTY_NUMBER,
                                g_variant_new_string (self->priv->number));
 
-    if (self->priv->state_reason != MM_CALL_STATE_REASON_UNKNOWN)
-        g_variant_builder_add (&builder,
-                               "{sv}",
-                               PROPERTY_STATE_REASON,
-                               g_variant_new_uint32 (self->priv->state_reason));
-
-    if (self->priv->state != MM_CALL_STATE_UNKNOWN)
-        g_variant_builder_add (&builder,
-                               "{sv}",
-                               PROPERTY_STATE,
-                               g_variant_new_uint32 (self->priv->state));
-
-    g_variant_builder_add (&builder,
-                           "{sv}",
-                           PROPERTY_DIRECTION,
-                           g_variant_new_uint32 (self->priv->direction));
-
     return g_variant_ref_sink (g_variant_builder_end (&builder));
 }
 
@@ -235,39 +245,6 @@
 {
     if (g_str_equal (key, PROPERTY_NUMBER)) {
         mm_call_properties_set_number (self, value);
-    } else if (g_str_equal (key, PROPERTY_DIRECTION)) {
-        MMCallDirection direction;
-        GError *inner_error = NULL;
-
-        direction = mm_common_get_call_direction_from_string (value, &inner_error);
-        if (inner_error) {
-            g_propagate_error (error, inner_error);
-            return FALSE;
-        }
-
-        mm_call_properties_set_direction(self, direction);
-    } else if (g_str_equal (key, PROPERTY_STATE)) {
-        MMCallState state;
-        GError *inner_error = NULL;
-
-        state = mm_common_get_call_state_from_string (value, &inner_error);
-        if (inner_error) {
-            g_propagate_error (error, inner_error);
-            return FALSE;
-        }
-
-        mm_call_properties_set_state(self, state);
-    } else if (g_str_equal (key, PROPERTY_STATE_REASON)) {
-        MMCallStateReason state_reason;
-        GError *inner_error = NULL;
-
-        state_reason = mm_common_get_call_state_reason_from_string (value, &inner_error);
-        if (inner_error) {
-            g_propagate_error (error, inner_error);
-            return FALSE;
-        }
-
-        mm_call_properties_set_state_reason (self, state_reason);
     } else {
         g_set_error (error,
                      MM_CORE_ERROR,
@@ -296,9 +273,12 @@
                            &ctx->error);
 }
 
+/*
+ * mm_call_properties_new_from_string: (skip)
+ */
 MMCallProperties *
 mm_call_properties_new_from_string (const gchar *str,
-                                   GError **error)
+                                    GError **error)
 {
     ParseKeyValueContext ctx;
 
@@ -332,18 +312,6 @@
         mm_call_properties_set_number (
             properties,
             g_variant_get_string (value, NULL));
-    else if (g_str_equal (key, PROPERTY_DIRECTION))
-        mm_call_properties_set_direction (
-            properties,
-            g_variant_get_uint32 (value));
-    else if (g_str_equal (key, PROPERTY_STATE))
-        mm_call_properties_set_state (
-            properties,
-            g_variant_get_uint32 (value));
-    else if (g_str_equal (key, PROPERTY_STATE_REASON))
-        mm_call_properties_set_state_reason (
-            properties,
-            g_variant_get_uint32 (value));
     else {
         /* Set error */
         g_set_error (error,
@@ -357,9 +325,12 @@
     return TRUE;
 }
 
+/*
+ * mm_call_properties_new_from_dictionary: (skip)
+ */
 MMCallProperties *
-mm_call_properties_new_from_dictionary (GVariant *dictionary,
-                                       GError **error)
+mm_call_properties_new_from_dictionary (GVariant  *dictionary,
+                                        GError   **error)
 {
     GError *inner_error = NULL;
     GVariantIter iter;
@@ -405,38 +376,14 @@
 /*****************************************************************************/
 
 /**
- * mm_call_properties_dup:
- * @orig: a #MMCallProperties
- *
- * Returns a copy of @orig.
- *
- * Returns: (transfer full): a #MMCallProperties
- */
-MMCallProperties *
-mm_call_properties_dup (MMCallProperties *orig)
-{
-    GVariant *dict;
-    MMCallProperties *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_CALL_PROPERTIES (orig), NULL);
-
-    dict = mm_call_properties_get_dictionary (orig);
-    copy = mm_call_properties_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
-/**
  * mm_call_properties_new:
  *
  * Creates a new empty #MMCallProperties.
  *
- * Returns: (transfer full): a #MMCallProperties. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMCallProperties. The returned value should be
+ * freed with g_object_unref().
+ *
+ * Since: 1.6
  */
 MMCallProperties *
 mm_call_properties_new (void)
@@ -447,14 +394,9 @@
 static void
 mm_call_properties_init (MMCallProperties *self)
 {
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                               MM_TYPE_CALL_PROPERTIES,
                                               MMCallPropertiesPrivate);
-
-    self->priv->number       = NULL;
-    self->priv->direction    = MM_CALL_DIRECTION_UNKNOWN;
-    self->priv->state        = MM_CALL_STATE_UNKNOWN;
-    self->priv->state_reason = MM_CALL_STATE_REASON_UNKNOWN;
 }
 
 static void
diff --git a/libmm-glib/mm-call-properties.h b/libmm-glib/mm-call-properties.h
index 6235193..e0b821b 100644
--- a/libmm-glib/mm-call-properties.h
+++ b/libmm-glib/mm-call-properties.h
@@ -59,22 +59,29 @@
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMCallProperties, g_object_unref)
 #endif
 
-MMCallProperties *mm_call_properties_new (void);
+MMCallProperties *mm_call_properties_new        (void);
+void              mm_call_properties_set_number (MMCallProperties *self,
+                                                 const gchar *text);
+const gchar      *mm_call_properties_get_number (MMCallProperties *self);
 
-void mm_call_properties_set_number       (MMCallProperties *self,
-                                          const gchar *text);
+#ifndef MM_DISABLE_DEPRECATED
+G_DEPRECATED
 void mm_call_properties_set_direction    (MMCallProperties *self,
-                                          MMCallDirection direction);
-void mm_call_properties_set_state_reason (MMCallProperties *self,
-                                          MMCallStateReason state_reason);
+                                          MMCallDirection   direction);
+G_DEPRECATED
+void mm_call_properties_set_state_reason (MMCallProperties  *self,
+                                          MMCallStateReason  state_reason);
+G_DEPRECATED
 void mm_call_properties_set_state        (MMCallProperties *self,
-                                          MMCallState state);
+                                          MMCallState       state);
+G_DEPRECATED
+MMCallDirection   mm_call_properties_get_direction    (MMCallProperties *self);
+G_DEPRECATED
+MMCallStateReason mm_call_properties_get_state_reason (MMCallProperties *self);
+G_DEPRECATED
+MMCallState       mm_call_properties_get_state        (MMCallProperties *self);
+#endif
 
-
-const gchar       *mm_call_properties_get_number      (MMCallProperties *self);
-MMCallDirection    mm_call_properties_get_direction   (MMCallProperties *self);
-MMCallStateReason  mm_call_properties_get_state_reason(MMCallProperties *self);
-MMCallState        mm_call_properties_get_state       (MMCallProperties *self);
 /*****************************************************************************/
 /* ModemManager/libmm-glib/mmcli specific methods */
 
@@ -82,14 +89,11 @@
     defined (_LIBMM_INSIDE_MMCLI) || \
     defined (LIBMM_GLIB_COMPILATION)
 
-MMCallProperties *mm_call_properties_new_from_string (const gchar *str,
-                                                      GError **error);
+MMCallProperties *mm_call_properties_new_from_string     (const gchar *str,
+                                                          GError **error);
 MMCallProperties *mm_call_properties_new_from_dictionary (GVariant *dictionary,
                                                           GError **error);
-
-MMCallProperties *mm_call_properties_dup (MMCallProperties *orig);
-
-GVariant *mm_call_properties_get_dictionary (MMCallProperties *self);
+GVariant         *mm_call_properties_get_dictionary      (MMCallProperties *self);
 
 #endif
 
diff --git a/libmm-glib/mm-call.c b/libmm-glib/mm-call.c
index 7d6b2b3..46edfd6 100644
--- a/libmm-glib/mm-call.c
+++ b/libmm-glib/mm-call.c
@@ -52,6 +52,8 @@
  * Gets the DBus path of the #MMCall object.
  *
  * Returns: (transfer none): The DBus path of the #MMCall object.
+ *
+ * Since: 1.6
  */
 const gchar *
 mm_call_get_path (MMCall *self)
@@ -68,7 +70,10 @@
  *
  * Gets a copy of the DBus path of the #MMCall object.
  *
- * Returns: (transfer full): The DBus path of the #MMCall object. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMCall object.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.6
  */
 gchar *
 mm_call_dup_path (MMCall *self)
@@ -99,6 +104,8 @@
  * thread.</warning>
  *
  * Returns: (transfer none): The number, or %NULL if it couldn't be retrieved.
+ *
+ * Since: 1.6
  */
 const gchar *
 mm_call_get_number (MMCall *self)
@@ -116,7 +123,10 @@
  * Gets the call number. In outgoing calls contains the dialing number or
  * the remote number in incoming calls
  *
- * Returns: (transfer full): The number, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The number, or %NULL if it couldn't be retrieved.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.6
  */
 gchar *
 mm_call_dup_number (MMCall *self)
@@ -136,6 +146,8 @@
  * Gets the call direction.
  *
  * Returns: a #MMCallDirection.
+ *
+ * Since: 1.6
  */
 MMCallDirection
 mm_call_get_direction (MMCall *self)
@@ -153,7 +165,9 @@
  *
  * Gets whether the call is part of a multiparty call.
  *
- * Returns: %TRUE if the call is part of a multiparty call, %FALSE otherwise..
+ * Returns: %TRUE if the call is part of a multiparty call, %FALSE otherwise.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_get_multiparty (MMCall *self)
@@ -172,6 +186,8 @@
  * Gets the current state of call.
  *
  * Returns: a #MMCallState.
+ *
+ * Since: 1.6
  */
 MMCallState
 mm_call_get_state (MMCall *self)
@@ -190,6 +206,8 @@
  * Gets the reason of why the call changes its state.
  *
  * Returns: a #MMCallStateReason.
+ *
+ * Since: 1.6
  */
 MMCallStateReason
 mm_call_get_state_reason (MMCall *self)
@@ -209,6 +227,8 @@
  *
  * Returns: (transfer none): The audio port, or %NULL if call audio is not
  * routed via the host or couldn't be retrieved.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_call_get_audio_port (MMCall *self)
@@ -227,6 +247,8 @@
  *
  * Returns: (transfer full): The audio port, or %NULL if call audio is not
  * routed via the host or couldn't be retrieved.
+ *
+ * Since: 1.10
  */
 gchar *
 mm_call_dup_audio_port (MMCall *self)
@@ -313,7 +335,10 @@
  * mm_call_get_audio_format() again to get a new #MMCallAudioFormat with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMCallAudioFormat that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMCallAudioFormat that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.10
  */
 MMCallAudioFormat *
 mm_call_get_audio_format (MMCall *self)
@@ -338,7 +363,10 @@
  * @self was constructed. Use mm_call_get_audio_format() if on another
  * thread.</warning>
  *
- * Returns: (transfer none): A #MMCallAudioFormat. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMCallAudioFormat. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.10
  */
 MMCallAudioFormat *
 mm_call_peek_audio_format (MMCall *self)
@@ -354,12 +382,15 @@
 /**
  * mm_call_start_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_start().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_start().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_start().
  *
  * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_start_finish (MMCall *self,
@@ -375,17 +406,22 @@
  * mm_call_start:
  * @self: A #MMCall.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to queue the call.
  *
  * Call objects can only be executed once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_start_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_start_finish() to get the result of the operation.
  *
  * See mm_call_start_sync() for the synchronous, blocking version of this method.
+ *
+ * Since: 1.6
  */
 void
 mm_call_start (MMCall *self,
@@ -415,6 +451,8 @@
  * See mm_call_start() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_start_sync (MMCall *self,
@@ -433,12 +471,15 @@
 /**
  * mm_call_accept_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_accept().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_accept().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_accept().
  *
- * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_accept_finish (MMCall *self,
@@ -454,17 +495,22 @@
  * mm_call_accept:
  * @self: A #MMCall.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to accept the incoming call.
  *
  * Call objects can only be executed once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_accept_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_accept_finish() to get the result of the operation.
  *
  * See mm_call_accept_sync() for the synchronous, blocking version of this method.
+ *
+ * Since: 1.6
  */
 void
 mm_call_accept (MMCall *self,
@@ -494,6 +540,8 @@
  * See mm_call_accept() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_accept_sync (MMCall *self,
@@ -512,12 +560,15 @@
 /**
  * mm_call_deflect_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_deflect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_deflect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_deflect().
  *
- * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_deflect_finish (MMCall *self,
@@ -534,17 +585,23 @@
  * @self: A #MMCall.
  * @number: new number where the call will be deflected.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to deflect the incoming call.
  *
  * This call will be considered terminated once the deflection is performed.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_deflect_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_deflect_finish() to get the result of the operation.
  *
- * See mm_call_deflect_sync() for the synchronous, blocking version of this method.
+ * See mm_call_deflect_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.12
  */
 void
 mm_call_deflect (MMCall *self,
@@ -577,6 +634,8 @@
  * See mm_call_deflect() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_deflect_sync (MMCall *self,
@@ -597,12 +656,15 @@
 /**
  * mm_call_join_multiparty_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_join_multiparty().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_join_multiparty().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_join_multiparty().
  *
  * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_join_multiparty_finish (MMCall        *self,
@@ -618,15 +680,21 @@
  * mm_call_join_multiparty:
  * @self: A #MMCall.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Synchronously requests to join this call into a multiparty call.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_join_multiparty_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_join_multiparty_finish() to get the result of the operation.
  *
- * See mm_call_join_multiparty_sync() for the synchronous, blocking version of this method.
+ * See mm_call_join_multiparty_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.12
  */
 void
 mm_call_join_multiparty (MMCall              *self,
@@ -654,6 +722,8 @@
  * See mm_call_join_multiparty() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_join_multiparty_sync (MMCall       *self,
@@ -670,12 +740,15 @@
 /**
  * mm_call_leave_multiparty_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_leave_multiparty().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_leave_multiparty().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_leave_multiparty().
  *
  * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_leave_multiparty_finish (MMCall        *self,
@@ -691,16 +764,22 @@
  * mm_call_leave_multiparty:
  * @self: A #MMCall.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Synchronously requests to make this call private again by leaving the
  * multiparty call.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_leave_multiparty_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_leave_multiparty_finish() to get the result of the operation.
  *
- * See mm_call_leave_multiparty_sync() for the synchronous, blocking version of this method.
+ * See mm_call_leave_multiparty_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.12
  */
 void
 mm_call_leave_multiparty (MMCall              *self,
@@ -729,6 +808,8 @@
  * See mm_call_leave_multiparty() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_call_leave_multiparty_sync (MMCall       *self,
@@ -747,12 +828,15 @@
 /**
  * mm_call_hangup_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_hangup().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_hangup().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_hangup().
  *
  * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_hangup_finish (MMCall *self,
@@ -768,17 +852,23 @@
  * mm_call_hangup:
  * @self: A #MMCall.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to hangup the call.
  *
  * Call objects can only be executed once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_hangup_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_hangup_finish() to get the result of the operation.
  *
- * See mm_call_hangup_sync() for the synchronous, blocking version of this method.
+ * See mm_call_hangup_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.6
  */
 void
 mm_call_hangup (MMCall *self,
@@ -808,6 +898,8 @@
  * See mm_call_hangup() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_hangup_sync (MMCall *self,
@@ -826,12 +918,15 @@
 /**
  * mm_call_send_dtmf_finish:
  * @self: A #MMCall.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_call_send_dtmf().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_call_send_dtmf().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_call_send_dtmf().
  *
  * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_send_dtmf_finish (MMCall *self,
@@ -848,17 +943,23 @@
  * @self: A #MMCall.
  * @dtmf: the DMTF tone.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to send a DTMF tone the call.
  *
  * Call objects can only be executed once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_call_send_dtmf_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_call_send_dtmf_finish() to get the result of the operation.
  *
- * See mm_call_send_dtmf_sync() for the synchronous, blocking version of this method.
+ * See mm_call_send_dtmf_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.6
  */
 void
 mm_call_send_dtmf (MMCall *self,
@@ -891,6 +992,8 @@
  * See mm_call_send_dtmf() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_call_send_dtmf_sync (MMCall *self,
diff --git a/libmm-glib/mm-cdma-manual-activation-properties.c b/libmm-glib/mm-cdma-manual-activation-properties.c
index 5e7f3c2..d5c1f92 100644
--- a/libmm-glib/mm-cdma-manual-activation-properties.c
+++ b/libmm-glib/mm-cdma-manual-activation-properties.c
@@ -58,7 +58,10 @@
  *
  * Gets the Service Programming Code.
  *
- * Returns: (transfer none): The SPC. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The SPC. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_cdma_manual_activation_properties_get_spc (MMCdmaManualActivationProperties *self)
@@ -105,6 +108,8 @@
  * Sets the Service Programming Code.
  *
  * Returns: %TRUE if the SPC was successfully set, or %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_spc (MMCdmaManualActivationProperties *self,
@@ -130,6 +135,8 @@
  * Gets the System Identification Number.
  *
  * Returns: The SID.
+ *
+ * Since: 1.2
  */
 guint16
 mm_cdma_manual_activation_properties_get_sid (MMCdmaManualActivationProperties *self)
@@ -145,6 +152,8 @@
  * @sid: The SID.
  *
  * Sets the Service Identification Number.
+ *
+ * Since: 1.2
  */
 void
 mm_cdma_manual_activation_properties_set_sid (MMCdmaManualActivationProperties *self,
@@ -163,7 +172,10 @@
  *
  * Gets the Mobile Directory Number.
  *
- * Returns: (transfer none): The MDN. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The MDN. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_cdma_manual_activation_properties_get_mdn (MMCdmaManualActivationProperties *self)
@@ -198,6 +210,8 @@
  * Sets the Mobile Directory Number.
  *
  * Returns: %TRUE if the MDN was successfully set, or %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_mdn (MMCdmaManualActivationProperties *self,
@@ -222,7 +236,10 @@
  *
  * Gets the Mobile Indentification Number.
  *
- * Returns: (transfer none): The MIN. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The MIN. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_cdma_manual_activation_properties_get_min (MMCdmaManualActivationProperties *self)
@@ -257,6 +274,8 @@
  * Sets the Mobile Identification Number.
  *
  * Returns: %TRUE if the MIN was successfully set, or %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_min (MMCdmaManualActivationProperties *self,
@@ -281,7 +300,10 @@
  *
  * Gets the MN-HA key.
  *
- * Returns: (transfer none): The MN-HA key. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The MN-HA key. Do not free the returned value, it
+ * is owned by @self.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_cdma_manual_activation_properties_get_mn_ha_key (MMCdmaManualActivationProperties *self)
@@ -315,7 +337,10 @@
  *
  * Sets the Mobile Identification Number.
  *
- * Returns: %TRUE if the MN-HA key was successfully set, or %FALSE if @error is set.
+ * Returns: %TRUE if the MN-HA key was successfully set, or %FALSE if @error
+ * is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_mn_ha_key (MMCdmaManualActivationProperties *self,
@@ -340,7 +365,10 @@
  *
  * Gets the MN-AAA key.
  *
- * Returns: (transfer none): The MN-AAA key. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The MN-AAA key. Do not free the returned value, it
+ * is owned by @self.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_cdma_manual_activation_properties_get_mn_aaa_key (MMCdmaManualActivationProperties *self)
@@ -374,7 +402,10 @@
  *
  * Sets the Mobile Identification Number.
  *
- * Returns: %TRUE if the MN-AAA key was successfully set, or %FALSE if @error is set.
+ * Returns: %TRUE if the MN-AAA key was successfully set, or %FALSE if @error is
+ * set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_mn_aaa_key (MMCdmaManualActivationProperties *self,
@@ -400,7 +431,10 @@
  *
  * Gets the Preferred Roaming List.
  *
- * Returns: (transfer none): The PRL. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The PRL. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.2
  */
 const guint8 *
 mm_cdma_manual_activation_properties_get_prl (MMCdmaManualActivationProperties *self,
@@ -420,7 +454,10 @@
  *
  * Gets the Preferred Roaming List.
  *
- * Returns: (transfer none): A #GByteArray with the PRL, or %NULL if it doesn't contain any. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): A #GByteArray with the PRL, or %NULL if it doesn't
+ * contain any. Do not free the returned value, it is owned by @self.
+ *
+ * Since: 1.2
  */
 GByteArray *
 mm_cdma_manual_activation_properties_peek_prl_bytearray (MMCdmaManualActivationProperties *self)
@@ -436,7 +473,10 @@
  *
  * Gets the Preferred Roaming List.
  *
- * Returns: (transfer full): A #GByteArray with the PRL, or %NULL if it doesn't contain any. The returned value should be freed with g_byte_array_unref().
+ * Returns: (transfer full): A #GByteArray with the PRL, or %NULL if it doesn't
+ * contain any. The returned value should be freed with g_byte_array_unref().
+ *
+ * Since: 1.2
  */
 GByteArray *
 mm_cdma_manual_activation_properties_get_prl_bytearray (MMCdmaManualActivationProperties *self)
@@ -472,6 +512,8 @@
  * Sets the Preferred Roaming List.
  *
  * Returns: %TRUE if the PRL was successfully set, or %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_prl (MMCdmaManualActivationProperties *self,
@@ -499,12 +541,15 @@
 /**
  * mm_cdma_manual_activation_properties_set_prl_bytearray:
  * @self: A #MMCdmaManualActivationProperties.
- * @prl: A #GByteArray with the PRL to set. This method takes a new reference of @prl.
+ * @prl: A #GByteArray with the PRL to set. This method takes a new reference
+ *  of @prl.
  * @error: Return location for error or %NULL.
  *
  * Sets the Preferred Roaming List.
  *
  * Returns: %TRUE if the PRL was successfully set, or %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_cdma_manual_activation_properties_set_prl_bytearray (MMCdmaManualActivationProperties *self,
@@ -526,12 +571,7 @@
 /*****************************************************************************/
 
 /**
- * mm_cdma_manual_activation_properties_get_dictionary:
- * @self: A #MMCdmaManualActivationProperties.
- *
- * Gets a variant dictionary with the contents of @self.
- *
- * Returns: (transfer full): A dictionary with the properties. The returned value should be freed with g_variant_unref().
+ * mm_cdma_manual_activation_properties_get_dictionary: (skip)
  */
 GVariant *
 mm_cdma_manual_activation_properties_get_dictionary (MMCdmaManualActivationProperties *self)
@@ -660,14 +700,7 @@
 }
 
 /**
- * mm_cdma_manual_activation_properties_new_from_dictionary:
- * @dictionary: A variant dictionary with the properties of the image.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #MMCdmaManualActivationProperties object with the properties exposed in
- * the dictionary.
- *
- * Returns: (transfer full): A #MMCdmaManualActivationProperties or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * mm_cdma_manual_activation_properties_new_from_dictionary: (skip)
  */
 MMCdmaManualActivationProperties *
 mm_cdma_manual_activation_properties_new_from_dictionary (GVariant *dictionary,
@@ -806,6 +839,9 @@
                            &ctx->error);
 }
 
+/**
+ * mm_cdma_manual_activation_properties_new_from_string: (skip)
+ */
 MMCdmaManualActivationProperties *
 mm_cdma_manual_activation_properties_new_from_string (const gchar *str,
                                                       GError **error)
@@ -837,7 +873,10 @@
  *
  * Creates a new #MMCdmaManualActivationProperties object.
  *
- * Returns: (transfer full): A #MMCdmaManualActivationProperties. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMCdmaManualActivationProperties. The returned
+ * value should be freed with g_object_unref().
+ *
+ * Since: 1.2
  */
 MMCdmaManualActivationProperties *
 mm_cdma_manual_activation_properties_new (void)
diff --git a/libmm-glib/mm-firmware-properties.c b/libmm-glib/mm-firmware-properties.c
index b9d9572..d96f343 100644
--- a/libmm-glib/mm-firmware-properties.c
+++ b/libmm-glib/mm-firmware-properties.c
@@ -31,7 +31,7 @@
  * or mm_modem_firmware_list_sync().
  */
 
-G_DEFINE_TYPE (MMFirmwareProperties, mm_firmware_properties, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMFirmwareProperties, mm_firmware_properties, G_TYPE_OBJECT)
 
 #define PROPERTY_UNIQUE_ID            "unique-id"
 #define PROPERTY_IMAGE_TYPE           "image-type"
@@ -64,7 +64,10 @@
  *
  * Gets the unique ID of the firmare image.
  *
- * Returns: (transfer none): The ID of the image. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The ID of the image. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_unique_id (MMFirmwareProperties *self)
@@ -83,6 +86,8 @@
  * Gets the type of the firmare image.
  *
  * Returns: A #MMFirmwareImageType specifying The type of the image.
+ *
+ * Since: 1.0
  */
 MMFirmwareImageType
 mm_firmware_properties_get_image_type (MMFirmwareProperties *self)
@@ -100,7 +105,10 @@
  *
  * Gets the PRI version of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
  *
- * Returns: The PRI version, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The PRI version, or %NULL if unknown. Do not free the returned value,
+ * it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_gobi_pri_version (MMFirmwareProperties *self)
@@ -111,6 +119,9 @@
     return self->priv->gobi_pri_version;
 }
 
+/*
+ * mm_firmware_properties_set_gobi_pri_version: (skip)
+ */
 void
 mm_firmware_properties_set_gobi_pri_version (MMFirmwareProperties *self,
                                              const gchar *version)
@@ -130,7 +141,10 @@
  *
  * Gets the PRI info of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
  *
- * Returns: The PRI info, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The PRI info, or %NULL if unknown. Do not free the returned value,
+ * it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_gobi_pri_info (MMFirmwareProperties *self)
@@ -141,6 +155,9 @@
     return self->priv->gobi_pri_info;
 }
 
+/*
+ * mm_firmware_properties_set_gobi_pri_info: (skip)
+ */
 void
 mm_firmware_properties_set_gobi_pri_info (MMFirmwareProperties *self,
                                           const gchar *info)
@@ -156,9 +173,13 @@
  * mm_firmware_properties_get_gobi_boot_version:
  * @self: a #MMFirmwareProperties.
  *
- * Gets the boot version of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
+ * Gets the boot version of a firmware image of type
+ * %MM_FIRMWARE_IMAGE_TYPE_GOBI.
  *
- * Returns: The boot version, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The boot version, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_gobi_boot_version (MMFirmwareProperties *self)
@@ -169,6 +190,9 @@
     return self->priv->gobi_boot_version;
 }
 
+/*
+ * mm_firmware_properties_set_gobi_boot_version: (skip)
+ */
 void
 mm_firmware_properties_set_gobi_boot_version (MMFirmwareProperties *self,
                                               const gchar *version)
@@ -186,9 +210,13 @@
  * mm_firmware_properties_get_gobi_pri_unique_id:
  * @self: a #MMFirmwareProperties.
  *
- * Gets the PRI unique ID of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
+ * Gets the PRI unique ID of a firmware image of type
+ * %MM_FIRMWARE_IMAGE_TYPE_GOBI.
  *
- * Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_gobi_pri_unique_id (MMFirmwareProperties *self)
@@ -199,6 +227,9 @@
     return self->priv->gobi_pri_unique_id;
 }
 
+/*
+ * mm_firmware_properties_set_gobi_pri_unique_id: (skip)
+ */
 void
 mm_firmware_properties_set_gobi_pri_unique_id (MMFirmwareProperties *self,
                                                const gchar *unique_id)
@@ -216,9 +247,13 @@
  * mm_firmware_properties_get_gobi_modem_unique_id:
  * @self: a #MMFirmwareProperties.
  *
- * Gets the MODEM unique ID of a firmware image of type %MM_FIRMWARE_IMAGE_TYPE_GOBI.
+ * Gets the MODEM unique ID of a firmware image of type
+ * %MM_FIRMWARE_IMAGE_TYPE_GOBI.
  *
- * Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The PRI unique ID, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_firmware_properties_get_gobi_modem_unique_id (MMFirmwareProperties *self)
@@ -229,6 +264,9 @@
     return self->priv->gobi_modem_unique_id;
 }
 
+/*
+ * mm_firmware_properties_set_gobi_modem_unique_id: (skip)
+ */
 void
 mm_firmware_properties_set_gobi_modem_unique_id (MMFirmwareProperties *self,
                                                  const gchar *unique_id)
@@ -242,13 +280,8 @@
 
 /*****************************************************************************/
 
-/**
- * mm_firmware_properties_get_dictionary:
- * @self: A #MMFirmwareProperties.
- *
- * Gets a variant dictionary with the contents of @self.
- *
- * Returns: (transfer full): A dictionary with the image properties. The returned value should be freed with g_variant_unref().
+/*
+ * mm_firmware_properties_get_dictionary: (skip)
  */
 GVariant *
 mm_firmware_properties_get_dictionary (MMFirmwareProperties *self)
@@ -346,15 +379,8 @@
     return TRUE;
 }
 
-/**
- * mm_firmware_properties_new_from_dictionary:
- * @dictionary: A variant dictionary with the properties of the image.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #MMFirmwareProperties object with the properties exposed in
- * the dictionary.
- *
- * Returns: (transfer full): A #MMFirmwareProperties or %NULL if @error is set. The returned value should be freed with g_object_unref().
+/*
+ * mm_firmware_properties_new_from_dictionary: (skip)
  */
 MMFirmwareProperties *
 mm_firmware_properties_new_from_dictionary (GVariant *dictionary,
@@ -420,14 +446,8 @@
 
 /*****************************************************************************/
 
-/**
- * mm_firmware_properties_new:
- * @image_type: A #MMFirmwareImageType specifying the type of the image.
- * @unique_id: The unique ID of the image.
- *
- * Creates a new #MMFirmwareProperties object with the properties specified.
- *
- * Returns: (transfer full): A #MMFirmwareProperties or %NULL if @error is set. The returned value should be freed with g_object_unref().
+/*
+ * mm_firmware_properties_new: (skip)
  */
 MMFirmwareProperties *
 mm_firmware_properties_new (MMFirmwareImageType image_type,
diff --git a/libmm-glib/mm-firmware-update-settings.c b/libmm-glib/mm-firmware-update-settings.c
index fc8a45b..72ef845 100644
--- a/libmm-glib/mm-firmware-update-settings.c
+++ b/libmm-glib/mm-firmware-update-settings.c
@@ -52,6 +52,8 @@
  * Gets the methods to use during the firmware update operation.
  *
  * Returns: a bitmask of #MMModemFirmwareUpdateMethod values.
+ *
+ * Since: 1.10
  */
 MMModemFirmwareUpdateMethod
 mm_firmware_update_settings_get_method (MMFirmwareUpdateSettings *self)
@@ -67,10 +69,13 @@
  * mm_firmware_update_settings_get_device_ids:
  * @self: a #MMFirmwareUpdateSettings.
  *
- * Gets the list of device ids used to identify the device during a firmware update
- * operation.
+ * Gets the list of device ids used to identify the device during a firmware
+ * update operation.
  *
- * Returns: (transfer none): The list of device ids, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The list of device ids, or %NULL if unknown. Do not
+ * free the returned value, it is owned by @self.
+ *
+ * Since: 1.10
  */
 const gchar **
 mm_firmware_update_settings_get_device_ids (MMFirmwareUpdateSettings *self)
@@ -80,6 +85,9 @@
     return (const gchar **) self->priv->device_ids;
 }
 
+/**
+ * mm_firmware_update_settings_set_device_ids: (skip)
+ */
 void
 mm_firmware_update_settings_set_device_ids (MMFirmwareUpdateSettings  *self,
                                             const gchar              **device_ids)
@@ -99,7 +107,10 @@
  * Gets firmware version string.
  *
  *
- * Returns: The version string, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The version string, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_firmware_update_settings_get_version (MMFirmwareUpdateSettings *self)
@@ -109,6 +120,9 @@
     return self->priv->version;
 }
 
+/**
+ * mm_firmware_update_settings_set_version: (skip)
+ */
 void
 mm_firmware_update_settings_set_version (MMFirmwareUpdateSettings *self,
                                          const gchar              *version)
@@ -128,9 +142,13 @@
  * Gets the AT command that should be sent to the module to trigger a reset
  * into fastboot mode.
  *
- * Only applicable if the update method includes %MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT.
+ * Only applicable if the update method includes
+ * %MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT.
  *
- * Returns: The AT command string, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: The AT command string, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_firmware_update_settings_get_fastboot_at (MMFirmwareUpdateSettings *self)
@@ -141,6 +159,9 @@
     return self->priv->fastboot_at;
 }
 
+/**
+ * mm_firmware_update_settings_set_fastboot_at: (skip)
+ */
 void
 mm_firmware_update_settings_set_fastboot_at (MMFirmwareUpdateSettings *self,
                                              const gchar              *fastboot_at)
@@ -155,12 +176,7 @@
 /*****************************************************************************/
 
 /**
- * mm_firmware_update_settings_get_variant:
- * @self: A #MMFirmwareUpdateSettings.
- *
- * Gets a variant with the contents of @self.
- *
- * Returns: (transfer full): A variant with the update settings. The returned value should be freed with g_variant_unref().
+ * mm_firmware_update_settings_get_variant: (skip)
  */
 GVariant *
 mm_firmware_update_settings_get_variant (MMFirmwareUpdateSettings *self)
@@ -223,13 +239,7 @@
 }
 
 /**
- * mm_firmware_update_settings_new_from_variant:
- * @variant: A variant with the update settings.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #MMFirmwareUpdateSettings from the input @variant.
- *
- * Returns: (transfer full): A #MMFirmwareUpdateSettings or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * mm_firmware_update_settings_new_from_variant: (skip)
  */
 MMFirmwareUpdateSettings *
 mm_firmware_update_settings_new_from_variant (GVariant  *variant,
@@ -295,6 +305,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_firmware_update_settings_new: (skip)
+ */
 MMFirmwareUpdateSettings *
 mm_firmware_update_settings_new (MMModemFirmwareUpdateMethod method)
 {
diff --git a/libmm-glib/mm-helper-types.c b/libmm-glib/mm-helper-types.c
index 1ac3610..73162eb 100644
--- a/libmm-glib/mm-helper-types.c
+++ b/libmm-glib/mm-helper-types.c
@@ -28,6 +28,8 @@
  * @array_size: length of @array.
  *
  * Frees an array of #MMModemPortInfo values.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_port_info_array_free (MMModemPortInfo *array,
diff --git a/libmm-glib/mm-helper-types.h b/libmm-glib/mm-helper-types.h
index d4e7fa9..a2b72c9 100644
--- a/libmm-glib/mm-helper-types.h
+++ b/libmm-glib/mm-helper-types.h
@@ -35,7 +35,10 @@
  * @allowed: Mask of #MMModemMode values specifying allowed modes.
  * @preferred: A single #MMModemMode value specifying the preferred mode.
  *
- * #MMModemModeCombination is a simple struct holding a pair of #MMModemMode values.
+ * #MMModemModeCombination is a simple struct holding a pair of #MMModemMode
+ * values.
+ *
+ * Since: 1.0
  */
 typedef struct _MMModemModeCombination MMModemModeCombination;
 struct _MMModemModeCombination {
@@ -49,6 +52,8 @@
  * @type: A #MMModemPortType value.
  *
  * Information of a given port.
+ *
+ * Since: 1.0
  */
 typedef struct _MMModemPortInfo MMModemPortInfo;
 struct _MMModemPortInfo {
@@ -66,6 +71,8 @@
  *
  * #MMOmaPendingNetworkInitiatedSession is a simple struct specifying the
  * information available for a pending network-initiated OMA session.
+ *
+ * Since: 1.2
  */
 typedef struct _MMOmaPendingNetworkInitiatedSession MMOmaPendingNetworkInitiatedSession;
 struct _MMOmaPendingNetworkInitiatedSession {
diff --git a/libmm-glib/mm-kernel-event-properties.c b/libmm-glib/mm-kernel-event-properties.c
index 6782fbf..6514944 100644
--- a/libmm-glib/mm-kernel-event-properties.c
+++ b/libmm-glib/mm-kernel-event-properties.c
@@ -56,6 +56,8 @@
  * @action: The action to set.
  *
  * Sets the action.
+ *
+ * Since: 1.8
  */
 void
 mm_kernel_event_properties_set_action (MMKernelEventProperties *self,
@@ -73,7 +75,10 @@
  *
  * Gets the action.
  *
- * Returns: (transfer none): The action. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The action. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.8
  */
 const gchar *
 mm_kernel_event_properties_get_action (MMKernelEventProperties *self)
@@ -91,6 +96,8 @@
  * @subsystem: The subsystem to set.
  *
  * Sets the subsystem.
+ *
+ * Since: 1.8
  */
 void
 mm_kernel_event_properties_set_subsystem (MMKernelEventProperties *self,
@@ -108,7 +115,10 @@
  *
  * Gets the subsystem.
  *
- * Returns: (transfer none): The subsystem. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The subsystem. Do not free the returned value, it
+ * is owned by @self.
+ *
+ * Since: 1.8
  */
 const gchar *
 mm_kernel_event_properties_get_subsystem (MMKernelEventProperties *self)
@@ -126,6 +136,8 @@
  * @name: The name to set.
  *
  * Sets the name.
+ *
+ * Since: 1.8
  */
 void
 mm_kernel_event_properties_set_name (MMKernelEventProperties *self,
@@ -143,7 +155,10 @@
  *
  * Gets the name.
  *
- * Returns: (transfer none): The name. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The name. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.8
  */
 const gchar *
 mm_kernel_event_properties_get_name (MMKernelEventProperties *self)
@@ -161,6 +176,8 @@
  * @uid: The uid to set.
  *
  * Sets the unique ID of the physical device.
+ *
+ * Since: 1.8
  */
 void
 mm_kernel_event_properties_set_uid (MMKernelEventProperties *self,
@@ -178,7 +195,10 @@
  *
  * Gets the unique ID of the physical device.
  *
- * Returns: (transfer none): The uid. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The uid. Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.8
  */
 const gchar *
 mm_kernel_event_properties_get_uid (MMKernelEventProperties *self)
@@ -190,6 +210,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_kernel_event_properties_get_dictionary: (skip)
+ */
 GVariant *
 mm_kernel_event_properties_get_dictionary (MMKernelEventProperties *self)
 {
@@ -274,6 +297,9 @@
                            &ctx->error);
 }
 
+/**
+ * mm_kernel_event_properties_new_from_string: (skip)
+ */
 MMKernelEventProperties *
 mm_kernel_event_properties_new_from_string (const gchar  *str,
                                             GError      **error)
@@ -335,6 +361,9 @@
     return TRUE;
 }
 
+/**
+ * mm_kernel_event_properties_new_from_dictionary: (skip)
+ */
 MMKernelEventProperties *
 mm_kernel_event_properties_new_from_dictionary (GVariant  *dictionary,
                                                 GError   **error)
@@ -383,38 +412,14 @@
 /*****************************************************************************/
 
 /**
- * mm_kernel_event_properties_dup:
- * @orig: a #MMKernelEventProperties
- *
- * Returns a copy of @orig.
- *
- * Returns: (transfer full): a #MMKernelEventProperties
- */
-MMKernelEventProperties *
-mm_kernel_event_properties_dup (MMKernelEventProperties *orig)
-{
-    GVariant *dict;
-    MMKernelEventProperties *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_KERNEL_EVENT_PROPERTIES (orig), NULL);
-
-    dict = mm_kernel_event_properties_get_dictionary (orig);
-    copy = mm_kernel_event_properties_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
-/**
  * mm_kernel_event_properties_new:
  *
  * Creates a new empty #MMKernelEventProperties.
  *
- * Returns: (transfer full): a #MMKernelEventProperties. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMKernelEventProperties. The returned value
+ * should be freed with g_object_unref().
+ *
+ * Since: 1.8
  */
 MMKernelEventProperties *
 mm_kernel_event_properties_new (void)
diff --git a/libmm-glib/mm-kernel-event-properties.h b/libmm-glib/mm-kernel-event-properties.h
index 5f33ae8..903fc6b 100644
--- a/libmm-glib/mm-kernel-event-properties.h
+++ b/libmm-glib/mm-kernel-event-properties.h
@@ -90,8 +90,6 @@
 MMKernelEventProperties *mm_kernel_event_properties_new_from_dictionary (GVariant  *dictionary,
                                                                          GError   **error);
 
-MMKernelEventProperties *mm_kernel_event_properties_dup                 (MMKernelEventProperties *orig);
-
 GVariant                *mm_kernel_event_properties_get_dictionary      (MMKernelEventProperties *self);
 
 #endif
diff --git a/libmm-glib/mm-location-3gpp.c b/libmm-glib/mm-location-3gpp.c
index d525db7..bea3913 100644
--- a/libmm-glib/mm-location-3gpp.c
+++ b/libmm-glib/mm-location-3gpp.c
@@ -58,6 +58,8 @@
  * Gets the Mobile Country Code of the 3GPP network.
  *
  * Returns: the MCC, or 0 if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_location_3gpp_get_mobile_country_code (MMLocation3gpp *self)
@@ -67,6 +69,9 @@
     return self->priv->mobile_country_code;
 }
 
+/**
+ * mm_location_3gpp_set_mobile_country_code: (skip)
+ */
 gboolean
 mm_location_3gpp_set_mobile_country_code (MMLocation3gpp *self,
                                           guint mobile_country_code)
@@ -94,6 +99,8 @@
  * be 0.
  *
  * Returns: the MNC, or 0 if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_location_3gpp_get_mobile_network_code (MMLocation3gpp *self)
@@ -103,6 +110,9 @@
     return self->priv->mobile_network_code;
 }
 
+/**
+ * mm_location_3gpp_set_mobile_network_code: (skip)
+ */
 gboolean
 mm_location_3gpp_set_mobile_network_code (MMLocation3gpp *self,
                                           guint mobile_network_code)
@@ -127,6 +137,8 @@
  * Gets the location area code of the 3GPP network.
  *
  * Returns: the location area code, or 0 if unknown.
+ *
+ * Since: 1.0
  */
 gulong
 mm_location_3gpp_get_location_area_code (MMLocation3gpp *self)
@@ -136,6 +148,9 @@
     return self->priv->location_area_code;
 }
 
+/**
+ * mm_location_3gpp_set_location_area_code: (skip)
+ */
 gboolean
 mm_location_3gpp_set_location_area_code (MMLocation3gpp *self,
                                          gulong location_area_code)
@@ -159,6 +174,8 @@
  * Gets the cell ID of the 3GPP network.
  *
  * Returns: the cell ID, or 0 if unknown.
+ *
+ * Since: 1.0
  */
 gulong
 mm_location_3gpp_get_cell_id (MMLocation3gpp *self)
@@ -168,6 +185,9 @@
     return self->priv->cell_id;
 }
 
+/**
+ * mm_location_3gpp_set_cell_id: (skip)
+ */
 gboolean
 mm_location_3gpp_set_cell_id (MMLocation3gpp *self,
                               gulong cell_id)
@@ -191,6 +211,8 @@
  * Gets the location area code of the 3GPP network.
  *
  * Returns: the location area code, or 0 if unknown.
+ *
+ * Since: 1.10
  */
 gulong
 mm_location_3gpp_get_tracking_area_code (MMLocation3gpp *self)
@@ -200,6 +222,9 @@
     return self->priv->tracking_area_code;
 }
 
+/**
+ * mm_location_3gpp_set_tracking_area_code: (skip)
+ */
 gboolean
 mm_location_3gpp_set_tracking_area_code (MMLocation3gpp *self,
                                          gulong tracking_area_code)
@@ -216,6 +241,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_3gpp_reset: (skip)
+ */
 gboolean
 mm_location_3gpp_reset (MMLocation3gpp *self)
 {
@@ -240,6 +268,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_3gpp_get_string_variant: (skip)
+ */
 GVariant *
 mm_location_3gpp_get_string_variant (MMLocation3gpp *self)
 {
@@ -325,6 +356,9 @@
     return TRUE;
 }
 
+/**
+ * mm_location_3gpp_new_from_string_variant: (skip)
+ */
 MMLocation3gpp *
 mm_location_3gpp_new_from_string_variant (GVariant *string,
                                           GError **error)
@@ -377,6 +411,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_3gpp_new: (skip)
+ */
 MMLocation3gpp *
 mm_location_3gpp_new (void)
 {
diff --git a/libmm-glib/mm-location-cdma-bs.c b/libmm-glib/mm-location-cdma-bs.c
index 993f6be..d050950 100644
--- a/libmm-glib/mm-location-cdma-bs.c
+++ b/libmm-glib/mm-location-cdma-bs.c
@@ -53,6 +53,8 @@
  * Gets the longitude, in the [-180,180] range.
  *
  * Returns: the longitude, or %MM_LOCATION_LONGITUDE_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gdouble
 mm_location_cdma_bs_get_longitude (MMLocationCdmaBs *self)
@@ -72,6 +74,8 @@
  * Gets the latitude, in the [-90,90] range.
  *
  * Returns: the latitude, or %MM_LOCATION_LATITUDE_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gdouble
 mm_location_cdma_bs_get_latitude (MMLocationCdmaBs *self)
@@ -84,6 +88,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_cdma_bs_set: (skip)
+ */
 gboolean
 mm_location_cdma_bs_set (MMLocationCdmaBs *self,
                          gdouble longitude,
@@ -107,6 +114,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_cdma_bs_get_dictionary: (skip)
+ */
 GVariant *
 mm_location_cdma_bs_get_dictionary (MMLocationCdmaBs *self)
 {
@@ -138,6 +148,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_cdma_bs_new_from_dictionary: (skip)
+ */
 MMLocationCdmaBs *
 mm_location_cdma_bs_new_from_dictionary (GVariant *dictionary,
                                          GError **error)
@@ -192,6 +205,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_cdma_bs_new: (skip)
+ */
 MMLocationCdmaBs *
 mm_location_cdma_bs_new (void)
 {
diff --git a/libmm-glib/mm-location-common.h b/libmm-glib/mm-location-common.h
index 6397dc6..afd90f2 100644
--- a/libmm-glib/mm-location-common.h
+++ b/libmm-glib/mm-location-common.h
@@ -26,8 +26,10 @@
  * Identifier for an unknown longitude value.
  *
  * Proper longitude values fall in the [-180,180] range.
+ *
+ * Since: 1.0
  */
-#define MM_LOCATION_LONGITUDE_UNKNOWN G_MINDOUBLE
+#define MM_LOCATION_LONGITUDE_UNKNOWN -G_MAXDOUBLE
 
 /**
  * MM_LOCATION_LATITUDE_UNKNOWN:
@@ -35,14 +37,18 @@
  * Identifier for an unknown latitude value.
  *
  * Proper latitude values fall in the [-90,90] range.
+ *
+ * Since: 1.0
  */
-#define MM_LOCATION_LATITUDE_UNKNOWN  G_MINDOUBLE
+#define MM_LOCATION_LATITUDE_UNKNOWN  -G_MAXDOUBLE
 
 /**
  * MM_LOCATION_ALTITUDE_UNKNOWN:
  *
  * Identifier for an unknown altitude value.
+ *
+ * Since: 1.0
  */
-#define MM_LOCATION_ALTITUDE_UNKNOWN  G_MINDOUBLE
+#define MM_LOCATION_ALTITUDE_UNKNOWN  -G_MAXDOUBLE
 
 #endif /* MM_LOCATION_COMMON_H */
diff --git a/libmm-glib/mm-location-gps-nmea.c b/libmm-glib/mm-location-gps-nmea.c
index 9b4f9da..c4c742f 100644
--- a/libmm-glib/mm-location-gps-nmea.c
+++ b/libmm-glib/mm-location-gps-nmea.c
@@ -34,7 +34,7 @@
  * mm_modem_location_get_full_sync().
  */
 
-G_DEFINE_TYPE (MMLocationGpsNmea, mm_location_gps_nmea, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMLocationGpsNmea, mm_location_gps_nmea, G_TYPE_OBJECT)
 
 struct _MMLocationGpsNmeaPrivate {
     GHashTable *traces;
@@ -119,6 +119,9 @@
     return TRUE;
 }
 
+/**
+ * mm_location_gps_nmea_add_trace: (skip)
+ */
 gboolean
 mm_location_gps_nmea_add_trace (MMLocationGpsNmea *self,
                                 const gchar *trace)
@@ -135,7 +138,10 @@
  *
  * Gets the last cached value of the specific @trace_type given.
  *
- * Returns: the NMEA trace, or %NULL if not available. Do not free the returned value, it is owned by @self.
+ * Returns: the NMEA trace, or %NULL if not available. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_location_gps_nmea_get_trace (MMLocationGpsNmea *self,
@@ -163,7 +169,10 @@
  *
  * Gets a compilation of all cached traces.
  *
- * Returns: (transfer full): a string containing all traces, or #NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): a string containing all traces, or #NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_location_gps_nmea_build_full (MMLocationGpsNmea *self)
@@ -179,6 +188,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_nmea_get_string_variant: (skip)
+ */
 GVariant *
 mm_location_gps_nmea_get_string_variant (MMLocationGpsNmea *self)
 {
@@ -196,6 +208,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_nmea_new_from_string_variant: (skip)
+ */
 MMLocationGpsNmea *
 mm_location_gps_nmea_new_from_string_variant (GVariant *string,
                                               GError **error)
@@ -239,6 +254,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_nmea_new: (skip)
+ */
 MMLocationGpsNmea *
 mm_location_gps_nmea_new (void)
 {
@@ -249,7 +267,7 @@
 static void
 mm_location_gps_nmea_init (MMLocationGpsNmea *self)
 {
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                               MM_TYPE_LOCATION_GPS_NMEA,
                                               MMLocationGpsNmeaPrivate);
 
diff --git a/libmm-glib/mm-location-gps-raw.c b/libmm-glib/mm-location-gps-raw.c
index 4cfe7f0..a5759e0 100644
--- a/libmm-glib/mm-location-gps-raw.c
+++ b/libmm-glib/mm-location-gps-raw.c
@@ -34,7 +34,7 @@
  * mm_modem_location_get_full_sync().
  */
 
-G_DEFINE_TYPE (MMLocationGpsRaw, mm_location_gps_raw, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMLocationGpsRaw, mm_location_gps_raw, G_TYPE_OBJECT)
 
 #define PROPERTY_UTC_TIME  "utc-time"
 #define PROPERTY_LATITUDE  "latitude"
@@ -59,7 +59,10 @@
  *
  * Gets the UTC time of the location being reported.
  *
- * Returns: a string with the UTC time, or #NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: a string with the UTC time, or #NULL if unknown. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_location_gps_raw_get_utc_time (MMLocationGpsRaw *self)
@@ -78,6 +81,8 @@
  * Gets the longitude, in the [-180,180] range.
  *
  * Returns: the longitude, or %MM_LOCATION_LONGITUDE_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gdouble
 mm_location_gps_raw_get_longitude (MMLocationGpsRaw *self)
@@ -97,6 +102,8 @@
  * Gets the latitude, in the [-90,90] range.
  *
  * Returns: the latitude, or %MM_LOCATION_LATITUDE_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gdouble
 mm_location_gps_raw_get_latitude (MMLocationGpsRaw *self)
@@ -116,6 +123,8 @@
  * Gets the altitude, in the [-90,90] range.
  *
  * Returns: the altitude, or %MM_LOCATION_ALTITUDE_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gdouble
 mm_location_gps_raw_get_altitude (MMLocationGpsRaw *self)
@@ -167,6 +176,9 @@
     return ret;
 }
 
+/**
+ * mm_location_gps_raw_add_trace: (skip)
+ */
 gboolean
 mm_location_gps_raw_add_trace (MMLocationGpsRaw *self,
                                const gchar *trace)
@@ -256,6 +268,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_raw_get_dictionary: (skip)
+ */
 GVariant *
 mm_location_gps_raw_get_dictionary (MMLocationGpsRaw *self)
 {
@@ -299,6 +314,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_raw_new_from_dictionary: (skip)
+ */
 MMLocationGpsRaw *
 mm_location_gps_raw_new_from_dictionary (GVariant *dictionary,
                                          GError **error)
@@ -359,6 +377,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_location_gps_raw_new: (skip)
+ */
 MMLocationGpsRaw *
 mm_location_gps_raw_new (void)
 {
@@ -369,7 +390,7 @@
 static void
 mm_location_gps_raw_init (MMLocationGpsRaw *self)
 {
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                               MM_TYPE_LOCATION_GPS_RAW,
                                               MMLocationGpsRawPrivate);
 
diff --git a/libmm-glib/mm-manager.c b/libmm-glib/mm-manager.c
index 3376763..c7585ed 100644
--- a/libmm-glib/mm-manager.c
+++ b/libmm-glib/mm-manager.c
@@ -146,12 +146,16 @@
 
 /**
  * mm_manager_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_new().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_new().
  * @error: Return location for error or %NULL
  *
  * Finishes an operation started with mm_manager_new().
  *
- * Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
+ * Returns: (transfer full) (type MMManager): The constructed object manager
+ * client or %NULL if @error is set.
+ *
+ * Since: 1.0
  */
 MMManager *
 mm_manager_new_finish (GAsyncResult  *res,
@@ -182,7 +186,10 @@
  *
  * You can then call mm_manager_new_finish() to get the result of the operation.
  *
- * See mm_manager_new_sync() for the synchronous, blocking version of this constructor.
+ * See mm_manager_new_sync() for the synchronous, blocking version of this
+ * constructor.
+ *
+ * Since: 1.0
  */
 void
 mm_manager_new (GDBusConnection               *connection,
@@ -217,7 +224,10 @@
  *
  * See mm_manager_new() for the asynchronous version of this constructor.
  *
- * Returns: (transfer full) (type MMManager): The constructed object manager client or %NULL if @error is set.
+ * Returns: (transfer full) (type MMManager): The constructed object manager
+ * client or %NULL if @error is set.
+ *
+ * Since: 1.0
  */
 MMManager *
 mm_manager_new_sync (GDBusConnection                *connection,
@@ -244,7 +254,10 @@
  *
  * Gets the #GDBusProxy interface of the @manager.
  *
- * Returns: (transfer none): The #GDBusProxy interface of @manager, or #NULL if none. Do not free the returned object, it is owned by @manager.
+ * Returns: (transfer none): The #GDBusProxy interface of @manager, or #NULL if
+ * none. Do not free the returned object, it is owned by @manager.
+ *
+ * Since: 1.0
  */
 GDBusProxy *
 mm_manager_peek_proxy (MMManager *manager)
@@ -263,7 +276,10 @@
  *
  * Gets the #GDBusProxy interface of the @manager.
  *
- * Returns: (transfer full): The #GDBusProxy interface of @manager, or #NULL if none. The returned object must be freed with g_object_unref().
+ * Returns: (transfer full): The #GDBusProxy interface of @manager, or #NULL if
+ * none. The returned object must be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 GDBusProxy *
 mm_manager_get_proxy (MMManager *manager)
@@ -286,7 +302,10 @@
  *
  * It is safe to assume this value never changes during runtime.
  *
- * Returns: (transfer none): The version, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The version, or %NULL if none available. Do not
+ * free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_manager_get_version (MMManager *manager)
@@ -305,12 +324,15 @@
 /**
  * mm_manager_set_logging_finish:
  * @manager: A #MMManager.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_set_logging().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_set_logging().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_manager_set_logging().
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_manager_set_logging_finish (MMManager     *manager,
@@ -343,7 +365,8 @@
  * @manager: A #MMManager.
  * @level: the login level to set.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to set the specified logging level in the daemon.
@@ -353,7 +376,10 @@
  * of the thread you are calling this method from. You can then call
  * mm_manager_set_logging_finish() to get the result of the operation.
  *
- * See mm_manager_set_logging_sync() for the synchronous, blocking version of this method.
+ * See mm_manager_set_logging_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_manager_set_logging (MMManager           *manager,
@@ -390,13 +416,15 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously requests to set the specified logging level in the daemon..
+ * Synchronously requests to set the specified logging level in the daemon.
  *
  * The calling thread is blocked until a reply is received.
  *
  * See mm_manager_set_logging() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_manager_set_logging_sync (MMManager     *manager,
@@ -421,12 +449,15 @@
 /**
  * mm_manager_scan_devices_finish:
  * @manager: A #MMManager.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_scan_devices().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_scan_devices().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_manager_scan_devices().
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_manager_scan_devices_finish (MMManager     *manager,
@@ -458,7 +489,8 @@
  * mm_manager_scan_devices:
  * @manager: A #MMManager.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to scan looking for devices.
@@ -468,7 +500,10 @@
  * of the thread you are calling this method from. You can then call
  * mm_manager_scan_devices_finish() to get the result of the operation.
  *
- * See mm_manager_scan_devices_sync() for the synchronous, blocking version of this method.
+ * See mm_manager_scan_devices_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_manager_scan_devices (MMManager           *manager,
@@ -509,6 +544,8 @@
  * See mm_manager_scan_devices() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_manager_scan_devices_sync (MMManager     *manager,
@@ -531,12 +568,15 @@
 /**
  * mm_manager_report_kernel_event_finish:
  * @manager: A #MMManager.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_report_kernel_event().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_report_kernel_event().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_manager_report_kernel_event().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.8
  */
 gboolean
 mm_manager_report_kernel_event_finish (MMManager     *manager,
@@ -568,7 +608,8 @@
  * @manager: A #MMManager.
  * @properties: the properties of the kernel event.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously report kernel event.
@@ -578,7 +619,10 @@
  * of the thread you are calling this method from. You can then call
  * mm_manager_report_kernel_event_finish() to get the result of the operation.
  *
- * See mm_manager_report_kernel_event_sync() for the synchronous, blocking version of this method.
+ * See mm_manager_report_kernel_event_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.8
  */
 void
 mm_manager_report_kernel_event (MMManager                *manager,
@@ -622,9 +666,12 @@
  *
  * The calling thread is blocked until a reply is received.
  *
- * See mm_manager_report_kernel_event() for the asynchronous version of this method.
+ * See mm_manager_report_kernel_event() for the asynchronous version of this
+ * method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.8
  */
 gboolean
 mm_manager_report_kernel_event_sync (MMManager                *manager,
@@ -723,12 +770,15 @@
 /**
  * mm_manager_inhibit_device_finish:
  * @manager: A #MMManager.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_inhibit_device().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_inhibit_device().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_manager_inhibit_device().
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_manager_inhibit_device_finish (MMManager     *manager,
@@ -744,14 +794,17 @@
  * @manager: A #MMManager.
  * @uid: the unique ID of the physical device.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously requests to add an inhibition on the device identified by @uid.
+ * Asynchronously requests to add an inhibition on the device identified by
+ * @uid.
  *
  * The @uid must be the unique ID retrieved from an existing #MMModem using
  * mm_modem_get_device(). The caller should keep track of this @uid and use it
- * in the mm_manager_uninhibit_device() call when the inhibition is no longer required.
+ * in the mm_manager_uninhibit_device() call when the inhibition is no longer
+ * required.
  *
  * The inhibition added with this method may also be automatically removed when
  * the caller program disappears from the bus (e.g. if the program ends before
@@ -762,7 +815,10 @@
  * of the thread you are calling this method from. You can then call
  * mm_manager_inhibit_device_finish() to get the result of the operation.
  *
- * See mm_manager_inhibit_device_sync() for the synchronous, blocking version of this method.
+ * See mm_manager_inhibit_device_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.10
  */
 void
 mm_manager_inhibit_device (MMManager           *manager,
@@ -786,7 +842,8 @@
  *
  * The @uid must be the unique ID retrieved from an existing #MMModem using
  * mm_modem_get_device(). The caller should keep track of this @uid and use it
- * in the mm_manager_uninhibit_device_sync() call when the inhibition is no longer required.
+ * in the mm_manager_uninhibit_device_sync() call when the inhibition is no
+ * longer required.
  *
  * The inhibition added with this method may also be automatically removed when
  * the caller program disappears from the bus (e.g. if the program ends before
@@ -795,6 +852,8 @@
  * See mm_manager_inhibit_device() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_manager_inhibit_device_sync (MMManager     *manager,
@@ -809,12 +868,15 @@
 /**
  * mm_manager_uninhibit_device_finish:
  * @manager: A #MMManager.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_manager_uninhibit_device().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_manager_uninhibit_device().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_manager_uninhibit_device().
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_manager_uninhibit_device_finish (MMManager     *manager,
@@ -830,22 +892,27 @@
  * @manager: A #MMManager.
  * @uid: the unique ID of the physical device.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously requests to remove an inhibition on the device identified by @uid.
+ * Asynchronously requests to remove an inhibition on the device identified by
+ * @uid.
  *
  * The @uid must be the same unique ID that was sent in the inhibition request.
  *
- * Only the same program that placed an inhibition on a given device is able to remove
- * the inhibition.
+ * Only the same program that placed an inhibition on a given device is able to
+ * remove the inhibition.
  *
  * When the operation is finished, @callback will be invoked in the
  * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
  * of the thread you are calling this method from. You can then call
  * mm_manager_uninhibit_device_finish() to get the result of the operation.
  *
- * See mm_manager_uninhibit_device_sync() for the synchronous, blocking version of this method.
+ * See mm_manager_uninhibit_device_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.10
  */
 void
 mm_manager_uninhibit_device (MMManager           *manager,
@@ -865,16 +932,20 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously requests to remove an inhibition on the device identified by @uid.
+ * Synchronously requests to remove an inhibition on the device identified by
+ * @uid.
  *
  * The @uid must be the same unique ID that was sent in the inhibition request.
  *
- * Only the same program that placed an inhibition on a given device is able to remove
- * the inhibition.
+ * Only the same program that placed an inhibition on a given device is able to
+ * remove the inhibition.
  *
- * See mm_manager_uninhibit_device() for the asynchronous version of this method.
+ * See mm_manager_uninhibit_device() for the asynchronous version of this
+ * method.
  *
  * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_manager_uninhibit_device_sync (MMManager     *manager,
@@ -911,7 +982,7 @@
     register_dbus_errors ();
 
     /* Setup private data */
-    manager->priv = G_TYPE_INSTANCE_GET_PRIVATE ((manager),
+    manager->priv = G_TYPE_INSTANCE_GET_PRIVATE (manager,
                                                  MM_TYPE_MANAGER,
                                                  MMManagerPrivate);
 }
diff --git a/libmm-glib/mm-modem-3gpp-ussd.c b/libmm-glib/mm-modem-3gpp-ussd.c
index f77a7f7..4b975fd 100644
--- a/libmm-glib/mm-modem-3gpp-ussd.c
+++ b/libmm-glib/mm-modem-3gpp-ussd.c
@@ -49,6 +49,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_ussd_get_path (MMModem3gppUssd *self)
@@ -63,9 +65,13 @@
  * mm_modem_3gpp_ussd_dup_path:
  * @self: A #MMModem3gppUssd.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_dup_path (MMModem3gppUssd *self)
@@ -90,10 +96,12 @@
  *
  * <warning>The returned value is only valid until the property changes so
  * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_3gpp_ussd_dup_network_request() if on another
- * thread.</warning>
+ * @self was constructed. Use mm_modem_3gpp_ussd_dup_network_request() if on
+ * another thread.</warning>
  *
  * Returns: (transfer none): The network request, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_ussd_get_network_request (MMModem3gppUssd *self)
@@ -110,7 +118,10 @@
  *
  * Gets a copy of any pending network-initiated request.
  *
- * Returns: (transfer full): The network request, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The network request, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_dup_network_request (MMModem3gppUssd *self)
@@ -127,14 +138,17 @@
  * mm_modem_3gpp_ussd_get_network_notification:
  * @self: A #MMModem3gppUssd.
  *
- * Gets any pending network-initiated request to which no USSD response is required.
+ * Gets any pending network-initiated request to which no USSD response is
+ * required.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_3gpp_ussd_dup_network_notification() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_3gpp_ussd_dup_network_notification() if on another thread.</warning>
  *
- * Returns: (transfer none): The network notification, or %NULL if none available.
+ * Returns: (transfer none): The network notification, or %NULL if none
+ * available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_ussd_get_network_notification (MMModem3gppUssd *self)
@@ -149,9 +163,13 @@
  * mm_modem_3gpp_ussd_dup_network_notification:
  * @self: A #MMModem3gppUssd.
  *
- * Gets a copy of any pending network-initiated request to which no USSD response is required.
+ * Gets a copy of any pending network-initiated request to which no USSD
+ * response is required.
  *
- * Returns: (transfer full): The network notification, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The network notification, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_dup_network_notification (MMModem3gppUssd *self)
@@ -171,6 +189,8 @@
  * Get the state of the ongoing USSD session, if any.
  *
  * Returns: A #MMModem3gppUssdSessionState value, specifying the current state.
+ *
+ * Since: 1.0
  */
 MMModem3gppUssdSessionState
 mm_modem_3gpp_ussd_get_state (MMModem3gppUssd *self)
@@ -185,12 +205,16 @@
 /**
  * mm_modem_3gpp_ussd_initiate_finish:
  * @self: A #MMModem3gppUssd.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_ussd_initiate().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_ussd_initiate().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_ussd_initiate().
  *
- * Returns: The response from the network, if any. The returned value should be freed with g_free().
+ * Returns: The response from the network, if any. The returned value should be
+ * freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_initiate_finish (MMModem3gppUssd *self,
@@ -211,19 +235,26 @@
  * @self: A #MMModem3gppUssd.
  * @command: The command to start the USSD session with.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously sends a USSD command string to the network initiating a USSD session.
+ * Asynchronously sends a USSD command string to the network initiating a USSD
+ * session.
  *
  * When the request is handled by the network, the method returns the
  * response or an appropriate error. The network may be awaiting further
  * response from the ME after returning from this method and no new command.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_ussd_initiate_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_ussd_initiate_finish() to get the result of the operation.
  *
- * See mm_modem_3gpp_ussd_initiate_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_ussd_initiate_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_ussd_initiate (MMModem3gppUssd *self,
@@ -244,16 +275,20 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously sends a USSD command string to the network initiating a USSD session.
+ * Synchronously sends a USSD command string to the network initiating a USSD
+ * session.
  *
  * When the request is handled by the network, the method returns the
  * response or an appropriate error. The network may be awaiting further
  * response from the ME after returning from this method and no new command.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_ussd_initiate()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_ussd_initiate() for the asynchronous version of this method.
  *
- * Returns: The response from the network, if any. The returned value should be freed with g_free().
+ * Returns: The response from the network, if any. The returned value should be
+ * freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_initiate_sync (MMModem3gppUssd *self,
@@ -275,12 +310,17 @@
 /**
  * mm_modem_3gpp_ussd_respond_finish:
  * @self: A #MMModem3gppUssd.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_ussd_respond().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_ussd_respond().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_ussd_respond().
  *
- * Returns: The network reply to this response to the network-initiated USSD command. The reply may require further responses. The returned value should be freed with g_free().
+ * Returns: The network reply to this response to the network-initiated USSD
+ * command. The reply may require further responses. The returned value should
+ * be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_respond_finish (MMModem3gppUssd *self,
@@ -299,19 +339,26 @@
 /**
  * mm_modem_3gpp_ussd_respond:
  * @self: A #MMModem3gppUssd.
- * @response: The response to network-initiated USSD command, or a response to a request for further input.
+ * @response: The response to network-initiated USSD command, or a response to a
+ *  request for further input.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously responds to a USSD request that is either initiated by the
  * mobile network, or that is awaiting further input after a previous call to
  * mm_modem_3gpp_ussd_initiate().
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_ussd_respond_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_ussd_respond_finish() to get the result of the operation.
  *
- * See mm_modem_3gpp_ussd_respond_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_ussd_respond_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_ussd_respond (MMModem3gppUssd *self,
@@ -328,7 +375,8 @@
 /**
  * mm_modem_3gpp_ussd_respond_sync:
  * @self: A #MMModem3gppUssd.
- * @response: The response to network-initiated USSD command, or a response to a request for further input.
+ * @response: The response to network-initiated USSD command, or a response to a
+ *  request for further input.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
@@ -336,10 +384,14 @@
  * mobile network, or that is awaiting further input after a previous call to
  * mm_modem_3gpp_ussd_initiate().
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_ussd_respond()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_ussd_respond() for the asynchronous version of this method.
  *
- * Returns: The network reply to this response to the network-initiated USSD command. The reply may require further responses. The returned value should be freed with g_free().
+ * Returns: The network reply to this response to the network-initiated USSD
+ * command. The reply may require further responses. The returned value should
+ * be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_ussd_respond_sync (MMModem3gppUssd *self,
@@ -361,12 +413,16 @@
 /**
  * mm_modem_3gpp_ussd_cancel_finish:
  * @self: A #MMModem3gppUssd.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_ussd_cancel().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_ussd_cancel().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_ussd_cancel().
  *
- * Returns: %TRUE if the session was successfully cancelled, %FALSE if @error is set.
+ * Returns: %TRUE if the session was successfully cancelled, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_3gpp_ussd_cancel_finish (MMModem3gppUssd *self,
@@ -382,15 +438,22 @@
  * mm_modem_3gpp_ussd_cancel:
  * @self: A #MMModem3gppUssd.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously cancels an ongoing USSD session, either mobile or network initiated.
+ * Asynchronously cancels an ongoing USSD session, either mobile or network
+ * initiated.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_ussd_cancel_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_ussd_cancel_finish() to get the result of the operation.
  *
- * See mm_modem_3gpp_ussd_cancel_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_ussd_cancel_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_ussd_cancel (MMModem3gppUssd *self,
@@ -409,12 +472,16 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously cancels an ongoing USSD session, either mobile or network initiated.
+ * Synchronously cancels an ongoing USSD session, either mobile or network
+ * initiated.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_ussd_cancel()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_ussd_cancel() for the asynchronous version of this method.
  *
- * Returns: %TRUE if the session was successfully cancelled, %FALSE if @error is set.
+ * Returns: %TRUE if the session was successfully cancelled, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_3gpp_ussd_cancel_sync (MMModem3gppUssd *self,
diff --git a/libmm-glib/mm-modem-3gpp.c b/libmm-glib/mm-modem-3gpp.c
index 8f1c025..03600c2 100644
--- a/libmm-glib/mm-modem-3gpp.c
+++ b/libmm-glib/mm-modem-3gpp.c
@@ -59,6 +59,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_get_path (MMModem3gpp *self)
@@ -73,9 +75,13 @@
  * mm_modem_3gpp_dup_path:
  * @self: A #MMModem3gpp.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_dup_path (MMModem3gpp *self)
@@ -105,6 +111,8 @@
  * thread.</warning>
  *
  * Returns: (transfer none): The IMEI, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_get_imei (MMModem3gpp *self)
@@ -122,7 +130,10 @@
  * Gets a copy of the <ulink url="http://en.wikipedia.org/wiki/Imei">IMEI</ulink>,
  * as reported by this #MMModem3gpp.
  *
- * Returns: (transfer full): The IMEI, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The IMEI, or %NULL if none available. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_dup_imei (MMModem3gpp *self)
@@ -139,8 +150,7 @@
  * mm_modem_3gpp_get_operator_code:
  * @self: A #MMModem3gpp.
  *
- * Gets the code of the operator to which the mobile is
- * currently registered.
+ * Gets the code of the operator to which the mobile is currently registered.
  *
  * Returned in the format <literal>"MCCMNC"</literal>, where
  * <literal>MCC</literal> is the three-digit ITU E.212 Mobile Country Code
@@ -157,6 +167,8 @@
  * thread.</warning>
  *
  * Returns: (transfer none): The operator code, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_get_operator_code (MMModem3gpp *self)
@@ -171,15 +183,18 @@
  * mm_modem_3gpp_dup_operator_code:
  * @self: A #MMModem3gpp.
  *
- * Gets a copy of the code of the operator to which the mobile is
- * currently registered.
+ * Gets a copy of the code of the operator to which the mobile is currently
+ * registered.
  *
  * Returned in the format <literal>"MCCMNC"</literal>, where
  * <literal>MCC</literal> is the three-digit ITU E.212 Mobile Country Code
  * and <literal>MNC</literal> is the two- or three-digit GSM Mobile Network
  * Code. e.g. e<literal>"31026"</literal> or <literal>"310260"</literal>.
  *
- * Returns: (transfer full): The operator code, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The operator code, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_dup_operator_code (MMModem3gpp *self)
@@ -205,6 +220,8 @@
  * thread.</warning>
  *
  * Returns: (transfer none): The operator name, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_get_operator_name (MMModem3gpp *self)
@@ -222,7 +239,10 @@
  * Gets a copy of the name of the operator to which the mobile is
  * currently registered.
  *
- * Returns: (transfer full): The operator name, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The operator name, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_3gpp_dup_operator_name (MMModem3gpp *self)
@@ -242,7 +262,10 @@
  * Get the the mobile registration status as defined in 3GPP TS 27.007
  * section 10.1.19.
  *
- * Returns: A #MMModem3gppRegistrationState value, specifying the current registration state.
+ * Returns: A #MMModem3gppRegistrationState value, specifying the current
+ * registration state.
+ *
+ * Since: 1.0
  */
 MMModem3gppRegistrationState
 mm_modem_3gpp_get_registration_state (MMModem3gpp *self)
@@ -263,15 +286,17 @@
  * Get the current subscription status of the account. This value is only
  * available after the modem attempts to register with the network.
  *
- * The value of this property can only be obtained with operator specific logic (e.g.
- * processing specific PCO info), and therefore it doesn't make sense to expose it in
- * the ModemManager interface.
+ * The value of this property can only be obtained with operator specific logic
+ * (e.g. processing specific PCO info), and therefore it doesn't make sense to
+ * expose it in the ModemManager interface.
  *
- * Returns: A #MMModem3gppSubscriptionState value, specifying the current subscription state.
+ * Returns: A #MMModem3gppSubscriptionState value, specifying the current
+ * subscription state.
  *
- * Deprecated: 1.10.0. The value of this property can only be obtained with operator
- * specific logic (e.g. processing specific PCO info), and therefore it doesn't make sense
- * to expose it in the ModemManager interface.
+ * Since: 1.0
+ * Deprecated: 1.10.0. The value of this property can only be obtained with
+ * operator specific logic (e.g. processing specific PCO info), and therefore
+ * it doesn't make sense to expose it in the ModemManager interface.
  */
 MMModem3gppSubscriptionState
 mm_modem_3gpp_get_subscription_state (MMModem3gpp *self)
@@ -289,7 +314,10 @@
  *
  * Get the list of facilities for which PIN locking is enabled.
  *
- * Returns: A bitmask of #MMModem3gppFacility flags, specifying which facilities have locks enabled.
+ * Returns: A bitmask of #MMModem3gppFacility flags, specifying which facilities
+ * have locks enabled.
+ *
+ * Since: 1.0
  */
 MMModem3gppFacility
 mm_modem_3gpp_get_enabled_facility_locks (MMModem3gpp *self)
@@ -306,6 +334,8 @@
  * Get the UE mode of operation for EPS.
  *
  * Returns: A #MMModem3gppEpsUeModeOperation.
+ *
+ * Since: 1.8
  */
 MMModem3gppEpsUeModeOperation
 mm_modem_3gpp_get_eps_ue_mode_operation (MMModem3gpp *self)
@@ -323,10 +353,11 @@
  *
  * Get the list of #MMPco received from the network.
  *
- * The caller is responsible for freeing the returned #GList with
- * mm_pco_list_free().
+ * Returns: (transfer full) (element-type ModemManager.Pco): a list of #MMPco
+ * objects, or #NULL if @error is set. The returned value should be freed with
+ * g_list_free_full() using g_object_unref() as #GDestroyNotify function.
  *
- * Returns: (element-type ModemManager.Pco) (transfer full): A list of #MMPco.
+ * Since: 1.10
  */
 GList *
 mm_modem_3gpp_get_pco (MMModem3gpp *self)
@@ -364,10 +395,13 @@
  *
  * <warning>The returned value is only valid until the property changes so
  * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_3gpp_dup_initial_eps_bearer_path() if on another
- * thread.</warning>
+ * @self was constructed. Use mm_modem_3gpp_dup_initial_eps_bearer_path() if on
+ * another thread.</warning>
  *
- * Returns: (transfer none): The DBus path of the #MMBearer, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The DBus path of the #MMBearer, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.10
  */
 const gchar *
 mm_modem_3gpp_get_initial_eps_bearer_path (MMModem3gpp *self)
@@ -381,9 +415,13 @@
  * mm_modem_3gpp_dup_initial_eps_bearer_path:
  * @self: A #MMModem3gpp.
  *
- * Gets a copy of the DBus path of the initial EPS #MMBearer exposed in this #MMModem3gpp.
+ * Gets a copy of the DBus path of the initial EPS #MMBearer exposed in this
+ * #MMModem3gpp.
  *
- * Returns: (transfer full): The DBus path of the #MMBearer, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMBearer, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.10
  */
 gchar *
 mm_modem_3gpp_dup_initial_eps_bearer_path (MMModem3gpp *self)
@@ -399,12 +437,15 @@
 /**
  * mm_modem_3gpp_register_finish:
  * @self: A #MMModem3gpp.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_register().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_register().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_register().
  *
  * Returns: %TRUE if the modem was registered, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_3gpp_register_finish (MMModem3gpp *self,
@@ -419,17 +460,24 @@
 /**
  * mm_modem_3gpp_register:
  * @self: A #MMModem3gpp.
- * @network_id: The operator ID to register. An empty string can be used to register to the home network.
+ * @network_id: The operator ID to register. An empty string can be used to
+ *  register to the home network.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests registration with a given mobile network.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_register_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_register_finish() to get the result of the operation.
  *
- * See mm_modem_3gpp_register_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_register_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_register (MMModem3gpp *self,
@@ -446,16 +494,19 @@
 /**
  * mm_modem_3gpp_register_sync:
  * @self: A #MMModem3gpp.
- * @network_id: The operator ID to register. An empty string can be used to register to the home network.
+ * @network_id: The operator ID to register. An empty string can be used to
+ *  register to the home network.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Synchronously requests registration with a given mobile network.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_register()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_register() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the modem was registered, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_3gpp_register_sync (MMModem3gpp *self,
@@ -483,6 +534,8 @@
  * @network: A #MMModem3gppNetwork.
  *
  * Frees a #MMModem3gppNetwork.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_network_free (MMModem3gppNetwork *network)
@@ -503,6 +556,8 @@
  * Get availability of the 3GPP network.
  *
  * Returns: A #MMModem3gppNetworkAvailability.
+ *
+ * Since: 1.0
  */
 MMModem3gppNetworkAvailability
 mm_modem_3gpp_network_get_availability (const MMModem3gppNetwork *network)
@@ -519,6 +574,8 @@
  * Get the long operator name of the 3GPP network.
  *
  * Returns: (transfer none): The long operator name, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_network_get_operator_long (const MMModem3gppNetwork *network)
@@ -535,6 +592,8 @@
  * Get the short operator name of the 3GPP network.
  *
  * Returns: (transfer none): The long operator name, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_network_get_operator_short (const MMModem3gppNetwork *network)
@@ -551,6 +610,8 @@
  * Get the operator code (MCCMNC) of the 3GPP network.
  *
  * Returns: (transfer none): The operator code, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_3gpp_network_get_operator_code (const MMModem3gppNetwork *network)
@@ -567,6 +628,8 @@
  * Get the technology used to access the 3GPP network.
  *
  * Returns: A #MMModemAccessTechnology.
+ *
+ * Since: 1.0
  */
 MMModemAccessTechnology
 mm_modem_3gpp_network_get_access_technology (const MMModem3gppNetwork *network)
@@ -648,10 +711,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_3gpp_get_initial_eps_bearer_settings() again to get a new #MMBearerProperties with the
- * new values.</warning>
+ * mm_modem_3gpp_get_initial_eps_bearer_settings() again to get a new
+ * #MMBearerProperties with the new values.</warning>
  *
- * Returns: (transfer full): A #MMBearerProperties that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMBearerProperties that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.10
  */
 MMBearerProperties *
 mm_modem_3gpp_get_initial_eps_bearer_settings (MMModem3gpp *self)
@@ -673,10 +739,13 @@
  *
  * <warning>The returned value is only valid until the property changes so
  * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_3gpp_get_initial_eps_bearer_settings() if on another
- * thread.</warning>
+ * @self was constructed. Use mm_modem_3gpp_get_initial_eps_bearer_settings()
+ * if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMBearerProperties. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMBearerProperties. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.10
  */
 MMBearerProperties *
 mm_modem_3gpp_peek_initial_eps_bearer_settings (MMModem3gpp *self)
@@ -738,12 +807,18 @@
 /**
  * mm_modem_3gpp_scan_finish:
  * @self: A #MMModem3gpp.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_scan().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_scan().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_scan().
  *
- * Returns: (transfer full) (element-type ModemManager.Modem3gppNetwork): a list of #MMModem3gppNetwork structs, or #NULL if @error is set. The returned value should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as #GDestroyNotify function.
+ * Returns: (transfer full) (element-type ModemManager.Modem3gppNetwork): a list
+ * of #MMModem3gppNetwork structs, or #NULL if @error is set. The returned value
+ * should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_3gpp_scan_finish (MMModem3gpp *self,
@@ -764,15 +839,21 @@
  * mm_modem_3gpp_scan:
  * @self: A #MMModem3gpp.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to scan available 3GPP networks.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_scan_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_scan_finish() to get the result of the operation.
  *
- * See mm_modem_3gpp_scan_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_scan_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_3gpp_scan (MMModem3gpp *self,
@@ -793,10 +874,15 @@
  *
  * Synchronously requests to scan available 3GPP networks.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_scan()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_scan() for the asynchronous version of this method.
  *
- * Returns:  (transfer full) (element-type ModemManager.Modem3gppNetwork):  a list of #MMModem3gppNetwork structs, or #NULL if @error is set. The returned value should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as #GDestroyNotify function.
+ * Returns: (transfer full) (element-type ModemManager.Modem3gppNetwork): a list
+ * of #MMModem3gppNetwork structs, or #NULL if @error is set. The returned value
+ * should be freed with g_list_free_full() using mm_modem_3gpp_network_free() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_3gpp_scan_sync (MMModem3gpp *self,
@@ -818,12 +904,15 @@
 /**
  * mm_modem_3gpp_set_eps_ue_mode_operation_finish:
  * @self: A #MMModem3gpp.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_set_eps_ue_mode_operation().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_set_eps_ue_mode_operation().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_set_eps_ue_mode_operation().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.8
  */
 gboolean
 mm_modem_3gpp_set_eps_ue_mode_operation_finish (MMModem3gpp   *self,
@@ -840,7 +929,8 @@
  * @self: A #MMModem3gpp.
  * @mode: A #MMModem3gppEpsUeModeOperation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to update the EPS UE mode of operation.
@@ -848,10 +938,14 @@
  * When the operation is finished, @callback will be invoked in the
  * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
  * of the thread you are calling this method from. You can then call
- * mm_modem_3gpp_set_eps_ue_mode_operation_finish() to get the result of the operation.
+ * mm_modem_3gpp_set_eps_ue_mode_operation_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_3gpp_set_eps_ue_mode_operation_sync() for the synchronous, blocking
- * version of this method. The calling thread is blocked until a reply is received.
+ * See mm_modem_3gpp_set_eps_ue_mode_operation_sync() for the synchronous,
+ * blocking version of this method. The calling thread is blocked until a reply
+ * is received.
+ *
+ * Since: 1.8
  */
 void
 mm_modem_3gpp_set_eps_ue_mode_operation (MMModem3gpp                    *self,
@@ -880,6 +974,8 @@
  * of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.8
  */
 gboolean
 mm_modem_3gpp_set_eps_ue_mode_operation_sync (MMModem3gpp                    *self,
@@ -898,12 +994,16 @@
 /**
  * mm_modem_3gpp_get_initial_eps_bearer_finish:
  * @self: A #MMModem3gpp.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_get_initial_eps_bearer().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_get_initial_eps_bearer().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_3gpp_get_initial_eps_bearer().
  *
- * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned
+ * value should be freed with g_object_unref().
+ *
+ * Since: 1.10
  */
 MMBearer *
 mm_modem_3gpp_get_initial_eps_bearer_finish (MMModem3gpp   *self,
@@ -940,15 +1040,23 @@
  * mm_modem_3gpp_get_initial_eps_bearer:
  * @self: A #MMModem3gpp.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously gets the initial EPS #MMBearer object exposed by this #MMModem3gpp.
+ * Asynchronously gets the initial EPS #MMBearer object exposed by this
+ * #MMModem3gpp.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_3gpp_get_initial_eps_bearer_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_3gpp_get_initial_eps_bearer_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_3gpp_get_initial_eps_bearer_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_3gpp_get_initial_eps_bearer_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.10
  */
 void
 mm_modem_3gpp_get_initial_eps_bearer (MMModem3gpp         *self,
@@ -992,12 +1100,17 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously gets the initial EPS #MMBearer object exposed by this #MMModem3gpp.
+ * Synchronously gets the initial EPS #MMBearer object exposed by this
+ * #MMModem3gpp.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_3gpp_get_initial_eps_bearer()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_3gpp_get_initial_eps_bearer() for the asynchronous version of this
+ * method.
  *
- * Returns: (transfer full): a #MMBearer or #NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMBearer or #NULL if @error is set. The returned
+ * value should be freed with g_object_unref().
+ *
+ * Since: 1.10
  */
 MMBearer *
 mm_modem_3gpp_get_initial_eps_bearer_sync (MMModem3gpp   *self,
@@ -1036,12 +1149,16 @@
 /**
  * mm_modem_3gpp_set_initial_eps_bearer_settings_finish:
  * @self: A #MMModem3gpp.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_set_initial_eps_bearer_settings().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_3gpp_set_initial_eps_bearer_settings().
  * @error: Return location for error or %NULL.
  *
- * Finishes an operation started with mm_modem_3gpp_set_initial_eps_bearer_settings().
+ * Finishes an operation started with
+ * mm_modem_3gpp_set_initial_eps_bearer_settings().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_modem_3gpp_set_initial_eps_bearer_settings_finish (MMModem3gpp   *self,
@@ -1056,7 +1173,8 @@
  * @self: A #MMModem3gpp.
  * @config: A #MMBearerProperties object with the properties to use.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously configures the settings for the initial LTE default bearer.
@@ -1064,7 +1182,10 @@
  * When the operation is finished, @callback will be invoked in the
  * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
  * of the thread you are calling this method from. You can then call
- * mm_modem_3gpp_set_initial_eps_bearer_settings_finish() to get the result of the operation.
+ * mm_modem_3gpp_set_initial_eps_bearer_settings_finish() to get the result of
+ * the operation.
+ *
+ * Since: 1.10
  */
 void
 mm_modem_3gpp_set_initial_eps_bearer_settings (MMModem3gpp         *self,
@@ -1098,6 +1219,8 @@
  * version of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_modem_3gpp_set_initial_eps_bearer_settings_sync (MMModem3gpp         *self,
diff --git a/libmm-glib/mm-modem-cdma.c b/libmm-glib/mm-modem-cdma.c
index a759697..0624915 100644
--- a/libmm-glib/mm-modem-cdma.c
+++ b/libmm-glib/mm-modem-cdma.c
@@ -50,6 +50,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_cdma_get_path (MMModemCdma *self)
@@ -64,9 +66,13 @@
  * mm_modem_cdma_dup_path:
  * @self: A #MMModemCdma.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_cdma_dup_path (MMModemCdma *self)
@@ -87,15 +93,17 @@
  * mm_modem_cdma_get_meid:
  * @self: A #MMModemCdma.
  *
- * Gets the <ulink url="http://en.wikipedia.org/wiki/MEID">Mobile Equipment Identifier</ulink>,
+ * Gets the
+ * <ulink url="http://en.wikipedia.org/wiki/MEID">Mobile Equipment Identifier</ulink>,
  * as reported by this #MMModemCdma.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_cdma_dup_meid() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_cdma_dup_meid() if on another thread.</warning>
  *
  * Returns: (transfer none): The MEID, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_cdma_get_meid (MMModemCdma *self)
@@ -110,10 +118,14 @@
  * mm_modem_cdma_dup_meid:
  * @self: A #MMModemCdma.
  *
- * Gets a copy of the <ulink url="http://en.wikipedia.org/wiki/MEID">Mobile Equipment Identifier</ulink>,
+ * Gets a copy of the
+ * <ulink url="http://en.wikipedia.org/wiki/MEID">Mobile Equipment Identifier</ulink>,
  * as reported by this #MMModemCdma.
  *
- * Returns: (transfer full): The MEID, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The MEID, or %NULL if none available. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_cdma_dup_meid (MMModemCdma *self)
@@ -130,17 +142,19 @@
  * mm_modem_cdma_get_esn:
  * @self: A #MMModemCdma.
  *
- * Gets the <ulink url="http://en.wikipedia.org/wiki/Electronic_serial_number">Electronic Serial Number</ulink>,
+ * Gets the
+ * <ulink url="http://en.wikipedia.org/wiki/Electronic_serial_number">Electronic Serial Number</ulink>,
  * as reported by this #MMModemCdma.
  *
  * The ESN is superceded by MEID, but still used in older devices.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_cdma_dup_esn() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_cdma_dup_esn() if on another thread.</warning>
  *
  * Returns: (transfer none): The ESN, or %NULL if none available.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_cdma_get_esn (MMModemCdma *self)
@@ -155,12 +169,16 @@
  * mm_modem_cdma_dup_esn:
  * @self: A #MMModemCdma.
  *
- * Gets a copy of the <ulink url="http://en.wikipedia.org/wiki/Electronic_serial_number">Electronic Serial Number</ulink>,
+ * Gets a copy of the
+ * <ulink url="http://en.wikipedia.org/wiki/Electronic_serial_number">Electronic Serial Number</ulink>,
  * as reported by this #MMModemCdma.
  *
  * The ESN is superceded by MEID, but still used in older devices.
  *
- * Returns: (transfer full): The ESN, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The ESN, or %NULL if none available. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_cdma_dup_esn (MMModemCdma *self)
@@ -177,11 +195,14 @@
  * mm_modem_cdma_get_sid:
  * @self: A #MMModemCdma.
  *
- * Gets the <ulink url="http://en.wikipedia.org/wiki/System_Identification_Number">System Identifier</ulink>
+ * Gets the
+ * <ulink url="http://en.wikipedia.org/wiki/System_Identification_Number">System Identifier</ulink>
  * of the serving CDMA 1x network, if known, and if the modem is registered with
  * a CDMA 1x network.
  *
  * Returns: The SID, or %MM_MODEM_CDMA_SID_UNKNOWN.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_cdma_get_sid (MMModemCdma *self)
@@ -197,11 +218,14 @@
  * mm_modem_cdma_get_nid:
  * @self: A #MMModemCdma.
  *
- * Gets the <ulink url="http://en.wikipedia.org/wiki/Network_Identification_Number">Network Identifier</ulink>
+ * Gets the
+ * <ulink url="http://en.wikipedia.org/wiki/Network_Identification_Number">Network Identifier</ulink>
  * of the serving CDMA 1x network, if known, and if the modem is registered with
  * a CDMA 1x network.
  *
  * Returns: The NID, or %MM_MODEM_CDMA_NID_UNKNOWN.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_cdma_get_nid (MMModemCdma *self)
@@ -220,6 +244,8 @@
  * Gets the state of the registration in the CDMA 1x network.
  *
  * Returns: a #MMModemCdmaRegistrationState.
+ *
+ * Since: 1.0
  */
 MMModemCdmaRegistrationState
 mm_modem_cdma_get_cdma1x_registration_state (MMModemCdma *self)
@@ -236,6 +262,8 @@
  * Gets the state of the registration in the EV-DO network.
  *
  * Returns: a #MMModemCdmaRegistrationState.
+ *
+ * Since: 1.0
  */
 MMModemCdmaRegistrationState
 mm_modem_cdma_get_evdo_registration_state (MMModemCdma *self)
@@ -254,6 +282,8 @@
  * Gets the state of the activation in the 3GPP2 network.
  *
  * Returns: a #MMModemCdmaActivationState.
+ *
+ * Since: 1.0
  */
 MMModemCdmaActivationState
 mm_modem_cdma_get_activation_state (MMModemCdma *self)
@@ -268,12 +298,15 @@
 /**
  * mm_modem_cdma_activate_finish:
  * @self: A #MMModemCdma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_cdma_activate().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_cdma_activate().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_cdma_activate().
  *
  * Returns: %TRUE if the activation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_cdma_activate_finish (MMModemCdma *self,
@@ -290,16 +323,22 @@
  * @self: A #MMModemCdma.
  * @carrier: Name of the carrier.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to provision the modem for use with a given carrier
  * using the modem's OTA activation functionality, if any.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_cdma_activate_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_cdma_activate_finish() to get the result of the operation.
  *
- * See mm_modem_cdma_activate_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_cdma_activate_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_cdma_activate (MMModemCdma *self,
@@ -323,10 +362,12 @@
  * Synchronously requests to provision the modem for use with a given carrier
  * using the modem's OTA activation functionality, if any.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_cdma_activate()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_cdma_activate() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the activation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_cdma_activate_sync (MMModemCdma *self,
@@ -344,12 +385,15 @@
 /**
  * mm_modem_cdma_activate_manual_finish:
  * @self: A #MMModemCdma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_cdma_activate_manual().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_cdma_activate_manual().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_cdma_activate_manual().
  *
  * Returns: %TRUE if the activation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_cdma_activate_manual_finish (MMModemCdma *self,
@@ -366,15 +410,22 @@
  * @self: A #MMModemCdma.
  * @properties: A #MMCdmaManualActivationProperties.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to provision the modem with the given properties.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_cdma_activate_manual_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from.
+ * You can then call mm_modem_cdma_activate_manual_finish() to get the result of
+ * the operation.
  *
- * See mm_modem_cdma_activate_manual_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_cdma_activate_manual_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_cdma_activate_manual (MMModemCdma *self,
@@ -405,10 +456,12 @@
  *
  * Synchronously requests to provision the modem with the given properties.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_cdma_activate_manual()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_cdma_activate_manual() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the activation was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_cdma_activate_manual_sync (MMModemCdma *self,
diff --git a/libmm-glib/mm-modem-firmware.c b/libmm-glib/mm-modem-firmware.c
index a2369c5..593fb7a 100644
--- a/libmm-glib/mm-modem-firmware.c
+++ b/libmm-glib/mm-modem-firmware.c
@@ -55,6 +55,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_firmware_get_path (MMModemFirmware *self)
@@ -69,9 +71,13 @@
  * mm_modem_firmware_dup_path:
  * @self: A #MMModemFirmware.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_firmware_dup_path (MMModemFirmware *self)
@@ -157,10 +163,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_firmware_get_update_settings() again to get a new #MMFirmwareUpdateSettings
- * with the new values.</warning>
+ * mm_modem_firmware_get_update_settings() again to get a new
+ * #MMFirmwareUpdateSettings with the new values.</warning>
  *
- * Returns: (transfer full): A #MMFirmwareUpdateSettings that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMFirmwareUpdateSettings that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.10
  */
 MMFirmwareUpdateSettings *
 mm_modem_firmware_get_update_settings (MMModemFirmware *self)
@@ -185,7 +194,10 @@
  * @self was constructed. Use mm_modem_firmware_get_update_settings() if on
  * another thread.</warning>
  *
- * Returns: (transfer none): A #MMFirmwareUpdateSettings. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMFirmwareUpdateSettings. Do not free the
+ * returned value, it belongs to @self.
+ *
+ * Since: 1.10
  */
 MMFirmwareUpdateSettings *
 mm_modem_firmware_peek_update_settings (MMModemFirmware *self)
@@ -201,12 +213,15 @@
 /**
  * mm_modem_firmware_select_finish:
  * @self: A #MMModemFirmware.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_firmware_select().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_firmware_select().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_firmware_select().
  *
  * Returns: %TRUE if the selection was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_firmware_select_finish (MMModemFirmware *self,
@@ -223,7 +238,8 @@
  * @self: A #MMModemFirmware.
  * @unique_id: Unique ID of the firmware image to select.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously selects a firmware image to boot.
@@ -231,10 +247,15 @@
  * <warning>The modem will possibly disappear once this action is run, as it
  * needs to reboot in order to select the new image.</warning>
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_firmware_select_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_firmware_select_finish() to get the result of the operation.
  *
- * See mm_modem_firmware_select_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_firmware_select_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_firmware_select (MMModemFirmware *self,
@@ -261,10 +282,12 @@
  * <warning>The modem will possibly disappear once this action is run, as it
  * needs to reboot in order to select the new image.</warning>
  *
- * The calling thread is blocked until a reply is received. See mm_modem_firmware_select()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_firmware_select() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the selection was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_firmware_select_sync (MMModemFirmware *self,
@@ -360,14 +383,22 @@
 /**
  * mm_modem_firmware_list_finish:
  * @self: A #MMModemFirmware.
- * @selected: (out) (allow-none) (transfer full): The selected firmware slot, or NULL if no slot is selected (such as if all slots are empty, or no slots exist). The returned value should be freed with g_object_unref().
- * @installed: (out) (allow-none) (transfer full) (element-type ModemManager.FirmwareProperties): A list of #MMFirmwareProperties objects specifying the installed images. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_firmware_list().
+ * @selected: (out) (allow-none) (transfer full): The selected firmware slot, or
+ *  %NULL if no slot is selected (such as if all slots are empty, or no slots
+ *  exist). The returned value should be freed with g_object_unref().
+ * @installed: (out) (allow-none) (transfer full) (element-type ModemManager.FirmwareProperties):
+ *  A list of #MMFirmwareProperties objects specifying the installed images. The
+ *  returned value should be freed with g_list_free_full() using
+ *  g_object_unref() as #GDestroyNotify.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_firmware_list().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_firmware_list().
  *
  * Returns: %TRUE if the list was correctly retrieved, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_firmware_list_finish (MMModemFirmware *self,
@@ -409,15 +440,21 @@
  * mm_modem_firmware_list:
  * @self: A #MMModemFirmware.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the list of available firmware images.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_firmware_list_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_firmware_list_finish() to get the result of the operation.
  *
- * See mm_modem_firmware_list_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_firmware_list_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_firmware_list (MMModemFirmware *self,
@@ -436,17 +473,24 @@
 /**
  * mm_modem_firmware_list_sync:
  * @self: A #MMModemFirmware.
- * @selected: (out) (allow-none) (transfer full): The selected firmware slot, or NULL if no slot is selected (such as if all slots are empty, or no slots exist). The returned value should be freed with g_object_unref().
- * @installed: (out) (allow-none) (transfer full) (element-type ModemManager.FirmwareProperties): A list of #MMFirmwareProperties objects specifying the installed images. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify.
+ * @selected: (out) (allow-none) (transfer full): The selected firmware slot,
+ *  or NULL if no slot is selected (such as if all slots are empty, or no slots
+ *  exist). The returned value should be freed with g_object_unref().
+ * @installed: (out) (allow-none) (transfer full) (element-type ModemManager.FirmwareProperties):
+ *  A list of #MMFirmwareProperties objects specifying the installed images. The
+ *  returned value should be freed with g_list_free_full() using
+ *  g_object_unref() as #GDestroyNotify.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return firmware for error or %NULL.
  *
  * Synchronously gets the list of available firmware images.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_firmware_list()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_firmware_list() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the list was correctly retrieved, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_firmware_list_sync (MMModemFirmware *self,
diff --git a/libmm-glib/mm-modem-location.c b/libmm-glib/mm-modem-location.c
index 8d97bf7..e6542a7 100644
--- a/libmm-glib/mm-modem-location.c
+++ b/libmm-glib/mm-modem-location.c
@@ -49,6 +49,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_location_get_path (MMModemLocation *self)
@@ -63,9 +65,13 @@
  * mm_modem_location_dup_path:
  * @self: A #MMModemLocation.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_location_dup_path (MMModemLocation *self)
@@ -86,9 +92,12 @@
  * mm_modem_location_get_capabilities:
  * @self: A #MMModemLocation.
  *
- * Gets a bitmask of the location capabilities supported by this #MMModemLocation.
+ * Gets a bitmask of the location capabilities supported by this
+ * #MMModemLocation.
  *
  * Returns: A #MMModemLocationSource.
+ *
+ * Since: 1.0
  */
 MMModemLocationSource
 mm_modem_location_get_capabilities (MMModemLocation *self)
@@ -107,6 +116,8 @@
  * Gets a bitmask of the supported assistance data types.
  *
  * Returns: A #MMModemLocationAssistanceDataType.
+ *
+ * Since: 1.10
  */
 MMModemLocationAssistanceDataType
 mm_modem_location_get_supported_assistance_data (MMModemLocation *self)
@@ -125,6 +136,8 @@
  * Gets a bitmask of the location capabilities which are enabled in this #MMModemLocation.
  *
  * Returns: A #MMModemLocationSource.
+ *
+ * Since: 1.0
  */
 MMModemLocationSource
 mm_modem_location_get_enabled (MMModemLocation *self)
@@ -142,7 +155,9 @@
  *
  * Gets the status of the location signaling in the #MMModemLocation.
  *
- * Returns: %TRUE if location changes are signaled, %FALSE otherwise..
+ * Returns: %TRUE if location changes are signaled, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_signals_location (MMModemLocation *self)
@@ -163,6 +178,8 @@
  * Finishes an operation started with mm_modem_location_setup().
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_setup_finish (MMModemLocation *self,
@@ -177,19 +194,26 @@
 /**
  * mm_modem_location_setup:
  * @self: A #MMModemLocation.
- * @sources: Bitmask of #MMModemLocationSource values specifying which locations should get enabled.
+ * @sources: Bitmask of #MMModemLocationSource values specifying which locations
+ *  should get enabled.
  * @signal_location: Flag to enable or disable location signaling.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously configures the location sources to use when gathering location
  * information. Also enable or disable location information gathering.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_setup_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_setup_finish() to get the result of the operation.
  *
- * See mm_modem_location_setup_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_setup_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_setup (MMModemLocation *self,
@@ -212,7 +236,8 @@
 /**
  * mm_modem_location_setup_sync:
  * @self: A #MMModemLocation.
- * @sources: Bitmask of #MMModemLocationSource values specifying which locations should get enabled.
+ * @sources: Bitmask of #MMModemLocationSource values specifying which locations
+ *  should get enabled.
  * @signal_location: Flag to enable or disable location signaling.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
@@ -220,10 +245,12 @@
  * Synchronously configures the location sources to use when gathering location
  * information. Also enable or disable location information gathering.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_setup()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_setup() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_setup_sync (MMModemLocation *self,
@@ -246,12 +273,16 @@
 /**
  * mm_modem_location_set_supl_server_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_set_supl_server().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_set_supl_server().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_set_supl_server().
  *
- * Returns: %TRUE if setting the SUPL server was successful, %FALSE if @error is set.
+ * Returns: %TRUE if setting the SUPL server was successful, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_modem_location_set_supl_server_finish (MMModemLocation *self,
@@ -268,15 +299,21 @@
  * @self: A #MMModemLocation.
  * @supl: The SUPL server address, given as IP:PORT or with a full URL.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously configures the address of the SUPL server for A-GPS operation.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_set_supl_server_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_set_supl_server_finish() to get the result of the operation.
  *
- * See mm_modem_location_set_supl_server_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_set_supl_server_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.6
  */
 void
 mm_modem_location_set_supl_server (MMModemLocation *self,
@@ -303,10 +340,14 @@
  *
  * Synchronously configures the address of the SUPL server for A-GPS operation.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_set_supl_server()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_set_supl_server() for the asynchronous version of this
+ * method.
  *
- * Returns: %TRUE if setting the SUPL server was successful, %FALSE if @error is set.
+ * Returns: %TRUE if setting the SUPL server was successful, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_modem_location_set_supl_server_sync (MMModemLocation *self,
@@ -327,12 +368,16 @@
 /**
  * mm_modem_location_inject_assistance_data_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_inject_assistance_data().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_inject_assistance_data().
  * @error: Return location for error or %NULL.
  *
- * Finishes an operation started with mm_modem_location_inject_assistance_data().
+ * Finishes an operation started with
+ * mm_modem_location_inject_assistance_data().
  *
  * Returns: %TRUE if the injection was successful, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_modem_location_inject_assistance_data_finish (MMModemLocation  *self,
@@ -350,15 +395,22 @@
  * @data: (array length=data_size): Data to inject.
  * @data_size: size of @data.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Aynchronously injects assistance data to the GNSS module.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_inject_assistance_data_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_inject_assistance_data_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_location_inject_assistance_data_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_inject_assistance_data_sync() for the synchronous,
+ * blocking version of this method.
+ *
+ * Since: 1.10
  */
 void
 mm_modem_location_inject_assistance_data (MMModemLocation     *self,
@@ -387,10 +439,13 @@
  *
  * Synchronously injects assistance data to the GNSS module.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_inject_assistance_data()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_inject_assistance_data() for the asynchronous version of
+ * this method.
  *
  * Returns: %TRUE if the injection was successful, %FALSE if @error is set.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_modem_location_inject_assistance_data_sync (MMModemLocation  *self,
@@ -412,12 +467,16 @@
 /**
  * mm_modem_location_set_gps_refresh_rate_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_set_gps_refresh_rate().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_set_gps_refresh_rate().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_set_gps_refresh_rate().
  *
- * Returns: %TRUE if setting the GPS refresh rate was successful, %FALSE if @error is set.
+ * Returns: %TRUE if setting the GPS refresh rate was successful, %FALSE if
+ * @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_set_gps_refresh_rate_finish (MMModemLocation *self,
@@ -439,12 +498,19 @@
  *
  * Asynchronously configures the GPS refresh rate.
 
- * If a 0 rate is used, the GPS location updates will be immediately propagated to the interface.
+ * If a 0 rate is used, the GPS location updates will be immediately propagated
+ * to the interface.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_set_gps_refresh_rate_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_set_gps_refresh_rate_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_location_set_gps_refresh_rate_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_set_gps_refresh_rate_sync() for the synchronous,
+ * blocking version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_set_gps_refresh_rate (MMModemLocation *self,
@@ -471,12 +537,17 @@
  *
  * Synchronously configures the GPS refresh rate.
  *
- * If a 0 rate is used, the GPS location updates will be immediately propagated to the interface.
+ * If a 0 rate is used, the GPS location updates will be immediately propagated
+ * to the interface.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_set_gps_refresh_rate()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_set_gps_refresh_rate() for the asynchronous version of this
+ * method.
  *
- * Returns: %TRUE if setting the refresh rate was successful, %FALSE if @error is set.
+ * Returns: %TRUE if setting the refresh rate was successful, %FALSE if @error
+ * is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_set_gps_refresh_rate_sync (MMModemLocation *self,
@@ -554,16 +625,27 @@
 /**
  * mm_modem_location_get_full_finish:
  * @self: A #MMModemLocation.
- * @location_3gpp: (out) (allow-none) (transfer full): Return location for a #MMLocation3gpp if 3GPP location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_gps_nmea: (out) (allow-none) (transfer full): Return location for a #MMLocationGpsNmea if GPS NMEA location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_gps_raw: (out) (allow-none) (transfer full): Return location for a #MMLocationGpsRaw if GPS raw location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_cdma_bs: (out) (allow-none) (transfer full): Return location for a #MMLocationCdmaBs if CDMA Base Station location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_get_full().
+ * @location_3gpp: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocation3gpp if 3GPP location is requested, or #NULL if not required. The
+ *  returned value should be freed with g_object_unref().
+ * @location_gps_nmea: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationGpsNmea if GPS NMEA location is requested, or #NULL if not
+ *  required. The returned value should be freed with g_object_unref().
+ * @location_gps_raw: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationGpsRaw if GPS raw location is requested, or #NULL if not required.
+ *  The returned value should be freed with g_object_unref().
+ * @location_cdma_bs: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationCdmaBs if CDMA Base Station location is requested, or #NULL if
+ *  not required. The returned value should be freed with g_object_unref().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_get_full().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_get_full().
  *
  * Returns: %TRUE if the retrieval was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_get_full_finish (MMModemLocation *self,
@@ -588,15 +670,21 @@
  * mm_modem_location_get_full:
  * @self: A #MMModemLocation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the current location information.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_get_full_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_get_full_finish() to get the result of the operation.
  *
- * See mm_modem_location_get_full_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_get_full_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_get_full (MMModemLocation *self,
@@ -615,19 +703,29 @@
 /**
  * mm_modem_location_get_full_sync:
  * @self: A #MMModemLocation.
- * @location_3gpp: (out) (allow-none) (transfer full): Return location for a #MMLocation3gpp if 3GPP location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_gps_nmea: (out) (allow-none) (transfer full): Return location for a #MMLocationGpsNmea if GPS NMEA location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_gps_raw: (out) (allow-none) (transfer full): Return location for a #MMLocationGpsRaw if GPS raw location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
- * @location_cdma_bs: (out) (allow-none) (transfer full): Return location for a #MMLocationCdmaBs if CDMA Base Station location is requested, or #NULL if not required. The returned value should be freed with g_object_unref().
+ * @location_3gpp: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocation3gpp if 3GPP location is requested, or #NULL if not required. The
+ *  returned value should be freed with g_object_unref().
+ * @location_gps_nmea: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationGpsNmea if GPS NMEA location is requested, or #NULL if not
+ *  required. The returned value should be freed with g_object_unref().
+ * @location_gps_raw: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationGpsRaw if GPS raw location is requested, or #NULL if not required.
+ *  The returned value should be freed with g_object_unref().
+ * @location_cdma_bs: (out) (allow-none) (transfer full): Return location for a
+ *  #MMLocationCdmaBs if CDMA Base Station location is requested, or #NULL if
+ *  not required. The returned value should be freed with g_object_unref().
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Synchronously gets the current location information.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_get_full()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_get_full() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_location_get_full_sync (MMModemLocation *self,
@@ -653,12 +751,16 @@
 /**
  * mm_modem_location_get_3gpp_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_get_3gpp().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_get_3gpp().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_get_3gpp().
  *
- * Returns: (transfer full): A #MMLocation3gpp, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocation3gpp, or #NULL if not available. The
+ *  returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocation3gpp *
 mm_modem_location_get_3gpp_finish (MMModemLocation *self,
@@ -676,15 +778,21 @@
  * mm_modem_location_get_3gpp:
  * @self: A #MMModemLocation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the current 3GPP location information.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_get_3gpp_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_get_3gpp_finish() to get the result of the operation.
  *
- * See mm_modem_location_get_3gpp_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_get_3gpp_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_get_3gpp (MMModemLocation *self,
@@ -703,10 +811,13 @@
  *
  * Synchronously gets the current 3GPP location information.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_get_3gpp()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_get_3gpp() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMLocation3gpp, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocation3gpp, or #NULL if not available. The
+ * returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocation3gpp *
 mm_modem_location_get_3gpp_sync (MMModemLocation *self,
@@ -725,12 +836,16 @@
 /**
  * mm_modem_location_get_gps_nmea_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_get_gps_nmea().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_get_gps_nmea().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_get_gps_nmea().
  *
- * Returns: (transfer full): A #MMLocationGpsNmea, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationGpsNmea, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationGpsNmea *
 mm_modem_location_get_gps_nmea_finish (MMModemLocation *self,
@@ -748,15 +863,21 @@
  * mm_modem_location_get_gps_nmea:
  * @self: A #MMModemLocation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the current GPS NMEA location information.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_get_gps_nmea_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_get_gps_nmea_finish() to get the result of the operation.
  *
- * See mm_modem_location_get_gps_nmea_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_get_gps_nmea_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_get_gps_nmea (MMModemLocation *self,
@@ -775,10 +896,13 @@
  *
  * Synchronously gets the current GPS NMEA location information.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_get_gps_nmea()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_get_gps_nmea() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMLocationGpsNmea, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationGpsNmea, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationGpsNmea *
 mm_modem_location_get_gps_nmea_sync (MMModemLocation *self,
@@ -797,12 +921,16 @@
 /**
  * mm_modem_location_get_gps_raw_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_get_gps_raw().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_get_gps_raw().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_get_gps_raw().
  *
- * Returns: (transfer full): A #MMLocationGpsRaw, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationGpsRaw, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationGpsRaw *
 mm_modem_location_get_gps_raw_finish (MMModemLocation *self,
@@ -820,15 +948,21 @@
  * mm_modem_location_get_gps_raw:
  * @self: A #MMModemLocation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the current GPS raw location information.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_get_gps_raw_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_get_gps_raw_finish() to get the result of the operation.
  *
- * See mm_modem_location_get_gps_raw_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_get_gps_raw_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_get_gps_raw (MMModemLocation *self,
@@ -847,10 +981,13 @@
  *
  * Synchronously gets the current GPS raw location information.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_get_gps_raw()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_get_gps_raw() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMLocationGpsRaw, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationGpsRaw, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationGpsRaw *
 mm_modem_location_get_gps_raw_sync (MMModemLocation *self,
@@ -869,12 +1006,16 @@
 /**
  * mm_modem_location_get_cdma_bs_finish:
  * @self: A #MMModemLocation.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_location_get_cdma_bs().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_location_get_cdma_bs().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_location_get_cdma_bs().
  *
- * Returns: (transfer full): A #MMLocationCdmaBs, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationCdmaBs, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationCdmaBs *
 mm_modem_location_get_cdma_bs_finish (MMModemLocation *self,
@@ -892,15 +1033,21 @@
  * mm_modem_location_get_cdma_bs:
  * @self: A #MMModemLocation.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the current CDMA base station location information.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_location_get_cdma_bs_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_location_get_cdma_bs_finish() to get the result of the operation.
  *
- * See mm_modem_location_get_cdma_bs_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_location_get_cdma_bs_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_location_get_cdma_bs (MMModemLocation *self,
@@ -919,10 +1066,13 @@
  *
  * Synchronously gets the current CDMA base station location information.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_location_get_cdma_bs()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_location_get_cdma_bs() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMLocationCdmaBs, or #NULL if not available. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A #MMLocationCdmaBs, or #NULL if not available.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMLocationCdmaBs *
 mm_modem_location_get_cdma_bs_sync (MMModemLocation *self,
@@ -944,12 +1094,14 @@
  *
  * Gets the address of the SUPL server.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_location_dup_supl_server() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_location_dup_supl_server() if on another thread.</warning>
  *
- * Returns: (transfer none): The SUPL server address, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The SUPL server address, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.6
  */
 const gchar *
 mm_modem_location_get_supl_server (MMModemLocation *self)
@@ -966,7 +1118,10 @@
  *
  * Gets the address of the SUPL server.
  *
- * Returns: (transfer full): The SUPL server address, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The SUPL server address, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.6
  */
 gchar *
 mm_modem_location_dup_supl_server (MMModemLocation *self)
@@ -985,12 +1140,15 @@
  *
  * Gets the list of assistance data servers.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_location_dup_assistance_data_servers() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_location_dup_assistance_data_servers() if on another thread.
+ * </warning>
  *
- * Returns: (transfer none): a %NULL-terminated array of server addresses, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): a %NULL-terminated array of server addresses, or
+ * %NULL if none available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.10
  */
 const gchar **
 mm_modem_location_get_assistance_data_servers (MMModemLocation *self)
@@ -1010,7 +1168,11 @@
  *
  * Gets the list of assistance data servers.
  *
- * Returns: (transfer full): a %NULL-terminated array of server addresses, or %NULL if none available. The returned value should be freed with g_strfreev().
+ * Returns: (transfer full): a %NULL-terminated array of server addresses, or
+ * %NULL if none available. The returned value should be freed with
+ * g_strfreev().
+ *
+ * Since: 1.10
  */
 gchar **
 mm_modem_location_dup_assistance_data_servers (MMModemLocation *self)
@@ -1036,6 +1198,8 @@
  * Gets the GPS refresh rate, in seconds.
  *
  * Returns: The GPS refresh rate, or 0 if no fixed rate is used.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_location_get_gps_refresh_rate (MMModemLocation *self)
diff --git a/libmm-glib/mm-modem-messaging.c b/libmm-glib/mm-modem-messaging.c
index e18a643..cc912a0 100644
--- a/libmm-glib/mm-modem-messaging.c
+++ b/libmm-glib/mm-modem-messaging.c
@@ -57,6 +57,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_messaging_get_path (MMModemMessaging *self)
@@ -71,9 +73,13 @@
  * mm_modem_messaging_dup_path:
  * @self: A #MMModemMessaging.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_messaging_dup_path (MMModemMessaging *self)
@@ -143,12 +149,16 @@
 /**
  * mm_modem_messaging_get_supported_storages:
  * @self: A #MMModem.
- * @storages: (out) (array length=n_storages): Return location for the array of #MMSmsStorage values. The returned array should be freed with g_free() when no longer needed.
+ * @storages: (out) (array length=n_storages): Return location for the array of
+ *  #MMSmsStorage values. The returned array should be freed with g_free() when
+ *  no longer needed.
  * @n_storages: (out): Return location for the number of values in @storages.
  *
  * Gets the list of SMS storages supported by the #MMModem.
  *
  * Returns: %TRUE if @storages and @n_storages are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_messaging_get_supported_storages (MMModemMessaging *self,
@@ -173,12 +183,15 @@
 /**
  * mm_modem_messaging_peek_supported_storages:
  * @self: A #MMModem.
- * @storages: (out): Return location for the array of #MMSmsStorage values. Do not free the returned array, it is owned by @self.
+ * @storages: (out): Return location for the array of #MMSmsStorage values. Do
+ *  not free the returned array, it is owned by @self.
  * @n_storages: (out): Return location for the number of values in @storages.
  *
  * Gets the list of SMS storages supported by the #MMModem.
  *
  * Returns: %TRUE if @storages and @n_storages are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_messaging_peek_supported_storages (MMModemMessaging *self,
@@ -207,6 +220,8 @@
  * Gets the default SMS storage used when storing or receiving SMS messages.
  *
  * Returns: the default #MMSmsStorage.
+ *
+ * Since: 1.0
  */
 MMSmsStorage
 mm_modem_messaging_get_default_storage (MMModemMessaging *self)
@@ -241,12 +256,18 @@
 /**
  * mm_modem_messaging_list_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_messaging_list().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_messaging_list().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_messaging_list().
  *
- * Returns: (element-type ModemManager.Sms) (transfer full): A list of #MMSms objects, or #NULL if either not found or @error is set. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify function.
+ * Returns: (element-type ModemManager.Sms) (transfer full): A list of #MMSms
+ * objects, or #NULL if either not found or @error is set. The returned value
+ * should be freed with g_list_free_full() using g_object_unref() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_messaging_list_finish (MMModemMessaging *self,
@@ -325,15 +346,21 @@
  * mm_modem_messaging_list:
  * @self: A #MMModemMessaging.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously lists the #MMSms objects in the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_messaging_list_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_messaging_list_finish() to get the result of the operation.
  *
- * See mm_modem_messaging_list_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_messaging_list_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_messaging_list (MMModemMessaging *self,
@@ -372,10 +399,15 @@
  *
  * Synchronously lists the #MMSms objects in the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_messaging_list()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_messaging_list() for the asynchronous version of this method.
  *
- * Returns: (element-type ModemManager.Sms) (transfer full): A list of #MMSms objects, or #NULL if either not found or @error is set. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify function.
+ * Returns: (element-type ModemManager.Sms) (transfer full): A list of #MMSms
+ * objects, or #NULL if either not found or @error is set. The returned value
+ * should be freed with g_list_free_full() using g_object_unref() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_messaging_list_sync (MMModemMessaging *self,
@@ -425,12 +457,16 @@
 /**
  * mm_modem_messaging_create_finish:
  * @self: A #MMModemMessaging.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_messaging_create().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_messaging_create().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_messaging_create().
  *
- * Returns: (transfer full): A newly created #MMSms, or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A newly created #MMSms, or %NULL if @error is set.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSms *
 mm_modem_messaging_create_finish (MMModemMessaging *self,
@@ -500,15 +536,21 @@
  * @self: A #MMModemMessaging.
  * @properties: A ##MMSmsProperties object with the properties to use.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously creates a new #MMSms in the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_messaging_create_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_messaging_create_finish() to get the result of the operation.
  *
- * See mm_modem_messaging_create_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_messaging_create_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_messaging_create (MMModemMessaging *self,
@@ -543,10 +585,13 @@
  *
  * Synchronously creates a new #MMSms in the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_messaging_create()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_messaging_create() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A newly created #MMSms, or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A newly created #MMSms, or %NULL if @error is set.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSms *
 mm_modem_messaging_create_sync (MMModemMessaging *self,
@@ -589,12 +634,15 @@
 /**
  * mm_modem_messaging_delete_finish:
  * @self: A #MMModemMessaging.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_messaging_delete().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_messaging_delete().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_messaging_delete().
  *
  * Returns: %TRUE if the sms was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_messaging_delete_finish (MMModemMessaging *self,
@@ -611,15 +659,21 @@
  * @self: A #MMModemMessaging.
  * @sms: Path of the #MMSms to delete.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously deletes a given #MMSms from the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_messaging_delete_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_messaging_delete_finish() to get the result of the operation.
  *
- * See mm_modem_messaging_delete_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_messaging_delete_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_messaging_delete (MMModemMessaging *self,
@@ -646,10 +700,12 @@
 
  * Synchronously deletes a given #MMSms from the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_messaging_delete()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_messaging_delete() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the SMS was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_messaging_delete_sync (MMModemMessaging *self,
diff --git a/libmm-glib/mm-modem-oma.c b/libmm-glib/mm-modem-oma.c
index 3002c8a..e1dc850 100644
--- a/libmm-glib/mm-modem-oma.c
+++ b/libmm-glib/mm-modem-oma.c
@@ -36,7 +36,8 @@
  * The #MMModemOma is an object providing access to the methods, signals and
  * properties of the OMA interface.
  *
- * The OMA interface is exposed whenever a modem has OMA device management capabilities.
+ * The OMA interface is exposed whenever a modem has OMA device management
+ * capabilities.
  */
 
 G_DEFINE_TYPE (MMModemOma, mm_modem_oma, MM_GDBUS_TYPE_MODEM_OMA_PROXY)
@@ -57,6 +58,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_modem_oma_get_path (MMModemOma *self)
@@ -71,9 +74,13 @@
  * mm_modem_oma_dup_path:
  * @self: A #MMModemOma.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.2
  */
 gchar *
 mm_modem_oma_dup_path (MMModemOma *self)
@@ -93,12 +100,15 @@
 /**
  * mm_modem_oma_setup_finish:
  * @self: A #MMModemOma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_oma_setup().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_oma_setup().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_oma_setup().
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_setup_finish (MMModemOma *self,
@@ -115,15 +125,21 @@
  * @self: A #MMModemOma.
  * @features: Mask of #MMOmaFeature values to enable.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously sets up the OMA device management service.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_oma_setup_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_oma_setup_finish() to get the result of the operation.
  *
- * See mm_modem_oma_setup_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_oma_setup_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.2
  */
 void
 mm_modem_oma_setup (MMModemOma *self,
@@ -146,10 +162,12 @@
  *
  * Synchronously sets up the OMA device management service.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_oma_setup()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_oma_setup() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_setup_sync (MMModemOma *self,
@@ -167,12 +185,16 @@
 /**
  * mm_modem_oma_start_client_initiated_session_finish:
  * @self: A #MMModemOma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_oma_start_client_initiated_session().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_oma_start_client_initiated_session().
  * @error: Return location for error or %NULL.
  *
- * Finishes an operation started with mm_modem_oma_start_client_initiated_session().
+ * Finishes an operation started with
+ * mm_modem_oma_start_client_initiated_session().
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_start_client_initiated_session_finish (MMModemOma *self,
@@ -189,15 +211,22 @@
  * @self: A #MMModemOma.
  * @session_type: A #MMOmaSessionType.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously starts a client-initiated OMA device management session.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_oma_start_client_initiated_session_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_oma_start_client_initiated_session_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_oma_start_client_initiated_session_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_oma_start_client_initiated_session_sync() for the synchronous,
+ * blocking version of this method.
+ *
+ * Since: 1.2
  */
 void
 mm_modem_oma_start_client_initiated_session (MMModemOma *self,
@@ -220,10 +249,13 @@
  *
  * Synchronously starts a client-initiated OMA device management session.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_oma_start_client_initiated_session()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_oma_start_client_initiated_session() for the asynchronous version
+ * of this method.
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_start_client_initiated_session_sync (MMModemOma *self,
@@ -241,12 +273,16 @@
 /**
  * mm_modem_oma_accept_network_initiated_session_finish:
  * @self: A #MMModemOma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_oma_accept_network_initiated_session().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_oma_accept_network_initiated_session().
  * @error: Return location for error or %NULL.
  *
- * Finishes an operation started with mm_modem_oma_accept_network_initiated_session().
+ * Finishes an operation started with
+ * mm_modem_oma_accept_network_initiated_session().
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_accept_network_initiated_session_finish (MMModemOma *self,
@@ -264,15 +300,22 @@
  * @session_id: The unique ID of the network-initiated session.
  * @accept: %TRUE if the session is to be accepted, %FALSE otherwise.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously accepts a nework-initiated OMA device management session.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_oma_accept_network_initiated_session_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_oma_accept_network_initiated_session_finish() to get the result of
+ * the operation.
  *
- * See mm_modem_oma_accept_network_initiated_session_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_oma_accept_network_initiated_session_sync() for the synchronous,
+ * blocking version of this method.
+ *
+ * Since: 1.2
  */
 void
 mm_modem_oma_accept_network_initiated_session (MMModemOma *self,
@@ -297,10 +340,13 @@
  *
  * Synchronously accepts a nework-initiated OMA device management session.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_oma_accept_network_initiated_session()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_oma_accept_network_initiated_session() for the asynchronous version
+ * of this method.
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_accept_network_initiated_session_sync (MMModemOma *self,
@@ -319,12 +365,15 @@
 /**
  * mm_modem_oma_cancel_session_finish:
  * @self: A #MMModemOma.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_oma_cancel_session().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_oma_cancel_session().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_oma_cancel_session().
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_cancel_session_finish (MMModemOma *self,
@@ -340,15 +389,21 @@
  * mm_modem_oma_cancel_session:
  * @self: A #MMModemOma.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously cancels the current OMA device management session.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_oma_cancel_session_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_oma_cancel_session_finish() to get the result of the operation.
  *
- * See mm_modem_oma_cancel_session_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_oma_cancel_session_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.2
  */
 void
 mm_modem_oma_cancel_session (MMModemOma *self,
@@ -369,10 +424,12 @@
  *
  * Synchronously cancels the current OMA device management session.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_oma_cancel_session()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_oma_cancel_session() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the session was started, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_oma_cancel_session_sync (MMModemOma *self,
@@ -393,6 +450,8 @@
  * Gets the currently enabled OMA features.
  *
  * Returns: a bitmask of #MMOmaFeature values.
+ *
+ * Since: 1.2
  */
 MMOmaFeature
 mm_modem_oma_get_features  (MMModemOma *self)
@@ -411,6 +470,8 @@
  * Gets the type of the current OMA device management session.
  *
  * Returns: a #MMOmaSessionType.
+ *
+ * Since: 1.2
  */
 MMOmaSessionType
 mm_modem_oma_get_session_type  (MMModemOma *self)
@@ -429,6 +490,8 @@
  * Gets the state of the current OMA device management session.
  *
  * Returns: a #MMOmaSessionState.
+ *
+ * Since: 1.2
  */
 MMOmaSessionState
 mm_modem_oma_get_session_state (MMModemOma *self)
@@ -510,12 +573,16 @@
 /**
  * mm_modem_get_pending_network_initiated_sessions:
  * @self: A #MMModem.
- * @sessions: (out) (array length=n_sessions): Return location for the array of #MMOmaPendingNetworkInitiatedSession structs. The returned array should be freed with g_free() when no longer needed.
+ * @sessions: (out) (array length=n_sessions): Return location for the array of
+ *  #MMOmaPendingNetworkInitiatedSession structs. The returned array should be
+ *  freed with g_free() when no longer needed.
  * @n_sessions: (out): Return location for the number of values in @sessions.
  *
  * Gets the list of pending network-initiated OMA sessions.
  *
  * Returns: %TRUE if @sessions and @n_sessions are set, %FALSE otherwise.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_get_pending_network_initiated_sessions (MMModemOma *self,
@@ -532,12 +599,16 @@
 /**
  * mm_modem_peek_pending_network_initiated_sessions:
  * @self: A #MMModem.
- * @sessions: (out) (array length=n_sessions): Return location for the array of #MMOmaPendingNetworkInitiatedSession values. Do not free the returned array, it is owned by @self.
+ * @sessions: (out) (array length=n_sessions): Return location for the array of
+ *  #MMOmaPendingNetworkInitiatedSession values. Do not free the returned array,
+ *  it is owned by @self.
  * @n_sessions: (out): Return location for the number of values in @sessions.
  *
  * Gets the list of pending network-initiated OMA sessions.
  *
  * Returns: %TRUE if @sessions and @n_sessions are set, %FALSE otherwise.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_peek_pending_network_initiated_sessions (MMModemOma *self,
diff --git a/libmm-glib/mm-modem-signal.c b/libmm-glib/mm-modem-signal.c
index 620dd2a..7727be6 100644
--- a/libmm-glib/mm-modem-signal.c
+++ b/libmm-glib/mm-modem-signal.c
@@ -35,8 +35,8 @@
  * The #MMModemSignal is an object providing access to the methods, signals and
  * properties of the Signal interface.
  *
- * The Signal interface is exposed whenever a modem has extended signal retrieval
- * capabilities.
+ * The Signal interface is exposed whenever a modem has extended signal
+ * retrieval capabilities.
  */
 
 G_DEFINE_TYPE (MMModemSignal, mm_modem_signal, MM_GDBUS_TYPE_MODEM_SIGNAL_PROXY)
@@ -69,6 +69,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.2
  */
 const gchar *
 mm_modem_signal_get_path (MMModemSignal *self)
@@ -83,9 +85,13 @@
  * mm_modem_signal_dup_path:
  * @self: A #MMModemSignal.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.2
  */
 gchar *
 mm_modem_signal_dup_path (MMModemSignal *self)
@@ -105,12 +111,15 @@
 /**
  * mm_modem_signal_setup_finish:
  * @self: A #MMModemSignal.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_signal_setup().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_signal_setup().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_signal_setup().
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_signal_setup_finish (MMModemSignal *self,
@@ -127,15 +136,21 @@
  * @self: A #MMModemSignal.
  * @rate: Rate to use when refreshing signal values.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously setups the extended signal quality retrieval.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_signal_setup_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_signal_setup_finish() to get the result of the operation.
  *
- * See mm_modem_signal_setup_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_signal_setup_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.2
  */
 void
 mm_modem_signal_setup (MMModemSignal *self,
@@ -158,10 +173,12 @@
  *
  * Synchronously setups the extended signal quality retrieval.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_signal_setup()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_signal_setup() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the setup was successful, %FALSE if @error is set.
+ *
+ * Since: 1.2
  */
 gboolean
 mm_modem_signal_setup_sync (MMModemSignal *self,
@@ -183,6 +200,8 @@
  * Gets the currently configured refresh rate.
  *
  * Returns: the refresh rate, in seconds.
+ *
+ * Since: 1.2
  */
 guint
 mm_modem_signal_get_rate (MMModemSignal *self)
@@ -321,10 +340,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_signal_get_cdma() again to get a new #MMSignal with the
- * new values.</warning>
+ * mm_modem_signal_get_cdma() again to get a new #MMSignal with the new values.
+ * </warning>
  *
- * Returns: (transfer full): A #MMSignal that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMSignal that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_get_cdma (MMModemSignal *self)
@@ -343,12 +365,14 @@
  *
  * Gets a #MMSignal object specifying the CDMA signal information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_signal_get_cdma() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_signal_get_cdma() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMSignal. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMSignal. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_peek_cdma (MMModemSignal *self)
@@ -369,10 +393,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_signal_get_evdo() again to get a new #MMSignal with the
- * new values.</warning>
+ * mm_modem_signal_get_evdo() again to get a new #MMSignal with the new values.
+ * </warning>
  *
- * Returns: (transfer full): A #MMSignal that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMSignal that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_get_evdo (MMModemSignal *self)
@@ -391,12 +418,14 @@
  *
  * Gets a #MMSignal object specifying the EV-DO signal information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_signal_get_evdo() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_signal_get_evdo() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMSignal. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMSignal. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_peek_evdo (MMModemSignal *self)
@@ -420,7 +449,10 @@
  * mm_modem_signal_get_gsm() again to get a new #MMSignal with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMSignal that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMSignal that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_get_gsm (MMModemSignal *self)
@@ -439,12 +471,14 @@
  *
  * Gets a #MMSignal object specifying the GSM signal information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_signal_get_gsm() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_signal_get_gsm() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMSignal. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMSignal. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_peek_gsm (MMModemSignal *self)
@@ -465,10 +499,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_signal_get_umts() again to get a new #MMSignal with the
- * new values.</warning>
+ * mm_modem_signal_get_umts() again to get a new #MMSignal with the new values.
+ * </warning>
  *
- * Returns: (transfer full): A #MMSignal that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMSignal that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_get_umts (MMModemSignal *self)
@@ -487,12 +524,14 @@
  *
  * Gets a #MMSignal object specifying the UMTS signal information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_signal_get_umts() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_signal_get_umts() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMSignal. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMSignal. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_peek_umts (MMModemSignal *self)
@@ -513,10 +552,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_signal_get_lte() again to get a new #MMSignal with the
- * new values.</warning>
+ * mm_modem_signal_get_lte() again to get a new #MMSignal with the new values.
+ * </warning>
  *
- * Returns: (transfer full): A #MMSignal that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMSignal that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_get_lte (MMModemSignal *self)
@@ -535,12 +577,14 @@
  *
  * Gets a #MMSignal object specifying the LTE signal information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_signal_get_lte() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_signal_get_lte() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMSignal. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMSignal. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.2
  */
 MMSignal *
 mm_modem_signal_peek_lte (MMModemSignal *self)
diff --git a/libmm-glib/mm-modem-simple.c b/libmm-glib/mm-modem-simple.c
index 56102fd..c4e099b 100644
--- a/libmm-glib/mm-modem-simple.c
+++ b/libmm-glib/mm-modem-simple.c
@@ -35,7 +35,8 @@
  * The #MMModemSimple is an object providing access to the methods, signals and
  * properties of the Simple interface.
  *
- * The Simple interface is exposed on modems which are not in %MM_MODEM_STATE_FAILED state.
+ * The Simple interface is exposed on modems which are not in
+ * %MM_MODEM_STATE_FAILED state.
  */
 
 G_DEFINE_TYPE (MMModemSimple, mm_modem_simple, MM_GDBUS_TYPE_MODEM_SIMPLE_PROXY)
@@ -49,6 +50,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_simple_get_path (MMModemSimple *self)
@@ -63,9 +66,13 @@
  * mm_modem_simple_dup_path:
  * @self: A #MMModemSimple.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_simple_dup_path (MMModemSimple *self)
@@ -85,12 +92,16 @@
 /**
  * mm_modem_simple_connect_finish:
  * @self: A #MMModemSimple.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_simple_connect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_simple_connect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_simple_connect().
  *
- * Returns: (transfer full): A #MMBearer, or %FALSE if @error is set. The returned value must be freed with g_object_ref().
+ * Returns: (transfer full): A #MMBearer, or %FALSE if @error is set. The
+ * returned value must be freed with g_object_ref().
+ *
+ * Since: 1.0
  */
 MMBearer *
 mm_modem_simple_connect_finish (MMModemSimple *self,
@@ -159,15 +170,21 @@
  * @self: A #MMModemSimple.
  * @properties: (transfer none): A #MMSimpleConnectProperties bundle.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to connect the modem using the given @properties.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_simple_connect_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_simple_connect_finish() to get the result of the operation.
  *
- * See mm_modem_simple_connect_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_simple_connect_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_simple_connect (MMModemSimple *self,
@@ -203,10 +220,13 @@
  *
  * Synchronously requests to connect the modem using the given @properties.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_simple_connect()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_simple_connect() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMBearer, or %FALSE if @error is set. The returned value must be freed with g_object_ref().
+ * Returns: (transfer full): A #MMBearer, or %FALSE if @error is set. The
+ * returned value must be freed with g_object_ref().
+ *
+ * Since: 1.0
  */
 MMBearer *
 mm_modem_simple_connect_sync (MMModemSimple *self,
@@ -249,12 +269,16 @@
 /**
  * mm_modem_simple_disconnect_finish:
  * @self: A #MMModemSimple.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_simple_disconnect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_simple_disconnect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_simple_disconnect().
  *
- * Returns: %TRUE if the modem is successfully disconnected, %FALSE if @error is set.
+ * Returns: %TRUE if the modem is successfully disconnected, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_simple_disconnect_finish (MMModemSimple *self,
@@ -269,17 +293,24 @@
 /**
  * mm_modem_simple_disconnect:
  * @self: A #MMModemSimple.
- * @bearer: (allow-none): Path of the bearer to disconnect, or %NULL to disconnect all connected bearers.
+ * @bearer: (allow-none): Path of the bearer to disconnect, or %NULL to
+ *  disconnect all connected bearers.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to disconnect the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_simple_disconnect_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_simple_disconnect_finish() to get the result of the operation.
  *
- * See mm_modem_simple_disconnect_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_simple_disconnect_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_simple_disconnect (MMModemSimple *self,
@@ -300,16 +331,20 @@
 /**
  * mm_modem_simple_disconnect_sync:
  * @self: A #MMModemSimple.
- * @bearer: (allow-none): Path of the bearer to disconnect, or %NULL to disconnect all connected bearers.
+ * @bearer: (allow-none): Path of the bearer to disconnect, or %NULL to
+ *  disconnect all connected bearers.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Synchronously requests to disconnect the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_simple_disconnect()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_simple_disconnect() for the asynchronous version of this method.
  *
- * Returns: %TRUE if the modem is successfully disconnected, %FALSE if @error is set.
+ * Returns: %TRUE if the modem is successfully disconnected, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_simple_disconnect_sync (MMModemSimple *self,
@@ -330,12 +365,16 @@
 /**
  * mm_modem_simple_get_status_finish:
  * @self: A #MMModemSimple.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_simple_connect().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_simple_connect().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_simple_get_status().
  *
- * Returns: (transfer full): A #MMSimpleStatus, or %FALSE if @error is set. The returned value must be freed with g_object_ref().
+ * Returns: (transfer full): A #MMSimpleStatus, or %FALSE if @error is set. The
+ * returned value must be freed with g_object_ref().
+ *
+ * Since: 1.0
  */
 MMSimpleStatus *
 mm_modem_simple_get_status_finish (MMModemSimple *self,
@@ -359,15 +398,21 @@
  * mm_modem_simple_get_status:
  * @self: A #MMModemSimple.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests a compilation of the status of the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_simple_get_status_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_simple_get_status_finish() to get the result of the operation.
  *
- * See mm_modem_simple_get_status_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_simple_get_status_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_simple_get_status (MMModemSimple *self,
@@ -391,10 +436,13 @@
  *
  * Synchronously requests a compilation of the status of the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_simple_get_status()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_simple_get_status() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A #MMSimpleStatus, or %FALSE if @error is set. The returned value must be freed with g_object_ref().
+ * Returns: (transfer full): A #MMSimpleStatus, or %FALSE if @error is set. The
+ * returned value must be freed with g_object_ref().
+ *
+ * Since: 1.0
  */
 MMSimpleStatus *
 mm_modem_simple_get_status_sync (MMModemSimple *self,
diff --git a/libmm-glib/mm-modem-time.c b/libmm-glib/mm-modem-time.c
index 0cab521..6cc8a74 100644
--- a/libmm-glib/mm-modem-time.c
+++ b/libmm-glib/mm-modem-time.c
@@ -56,6 +56,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_time_get_path (MMModemTime *self)
@@ -70,9 +72,13 @@
  * mm_modem_time_dup_path:
  * @self: A #MMModemTime.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_time_dup_path (MMModemTime *self)
@@ -92,12 +98,16 @@
 /**
  * mm_modem_time_get_network_time_finish:
  * @self: A #MMModemTime.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_enable().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_enable().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_time_get_network_time().
  *
- * Returns: (transfer full): A string containing the network time, or %NULL if @error is set. The returned value should be freed with g_free().
+ * Returns: (transfer full): A string containing the network time, or %NULL if
+ * @error is set. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_time_get_network_time_finish (MMModemTime *self,
@@ -118,15 +128,21 @@
  * mm_modem_time_get_network_time:
  * @self: A #MMModemTime.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests the current network time.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_time_get_network_time_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_time_get_network_time_finish() to get the result of the operation.
  *
- * See mm_modem_time_get_network_time_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_time_get_network_time_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_time_get_network_time (MMModemTime *self,
@@ -150,10 +166,13 @@
  *
  * Synchronously requests the current network time.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_time_get_network_time()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_time_get_network_time() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A string containing the network time, or %NULL if @error is set. The returned value should be freed with g_free().
+ * Returns: (transfer full): A string containing the network time, or %NULL if
+ * @error is set. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_time_get_network_time_sync (MMModemTime *self,
@@ -228,10 +247,13 @@
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
- * mm_modem_time_get_network_timezone() again to get a new #MMNetworkTimezone with the
- * new values.</warning>
+ * mm_modem_time_get_network_timezone() again to get a new #MMNetworkTimezone
+ * with the new values.</warning>
  *
- * Returns: (transfer full): A #MMNetworkTimezone that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMNetworkTimezone that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.0
  */
 MMNetworkTimezone *
 mm_modem_time_get_network_timezone (MMModemTime *self)
@@ -250,12 +272,14 @@
  *
  * Gets the network timezone information.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_time_get_network_timezone() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_time_get_network_timezone() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMNetworkTimezone. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMNetworkTimezone. Do not free the returned
+ * value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 MMNetworkTimezone *
 mm_modem_time_peek_network_timezone (MMModemTime *self)
diff --git a/libmm-glib/mm-modem-voice.c b/libmm-glib/mm-modem-voice.c
index ce22e0b..8d13a24 100644
--- a/libmm-glib/mm-modem-voice.c
+++ b/libmm-glib/mm-modem-voice.c
@@ -50,6 +50,8 @@
  * Gets the DBus path of the #MMObject which implements this interface.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.6
  */
 const gchar *
 mm_modem_voice_get_path (MMModemVoice *self)
@@ -64,9 +66,13 @@
  * mm_modem_voice_dup_path:
  * @self: A #MMModemVoice.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.6
  */
 gchar *
 mm_modem_voice_dup_path (MMModemVoice *self)
@@ -87,7 +93,9 @@
  *
  * Checks whether emergency calls only are allowed.
  *
- * Returns: %TRUE if only emergency calls are allowed, %FALSE otherwise..
+ * Returns: %TRUE if only emergency calls are allowed, %FALSE otherwise.
+ *
+ * Since: 1.12
  */
 gboolean
 mm_modem_voice_get_emergency_only (MMModemVoice *self)
@@ -120,12 +128,18 @@
 /**
  * mm_modem_voice_list_calls_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_list_calls().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_list_calls().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_list_calls().
  *
- * Returns: (element-type ModemManager.Call) (transfer full): A list of #MMCall objects, or #NULL if either not found or @error is set. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify function.
+ * Returns: (element-type ModemManager.Call) (transfer full): A list of #MMCall
+ * objects, or #NULL if either not found or @error is set. The returned value
+ * should be freed with g_list_free_full() using g_object_unref() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.6
  */
 GList *
 mm_modem_voice_list_calls_finish (MMModemVoice *self,
@@ -204,15 +218,21 @@
  * mm_modem_voice_list_calls:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously lists the #MMCall objects in the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_list_calls_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_list_calls_finish() to get the result of the operation.
  *
- * See mm_modem_voice_list_calls_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_list_calls_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.6
  */
 void
 mm_modem_voice_list_calls (MMModemVoice *self,
@@ -251,10 +271,15 @@
  *
  * Synchronously lists the #MMCall objects in the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_list_calls()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_list_calls() for the asynchronous version of this method.
  *
- * Returns: (element-type ModemManager.Call) (transfer full): A list of #MMCall objects, or #NULL if either not found or @error is set. The returned value should be freed with g_list_free_full() using g_object_unref() as #GDestroyNotify function.
+ * Returns: (element-type ModemManager.Call) (transfer full): A list of #MMCall
+ * objects, or #NULL if either not found or @error is set. The returned value
+ * should be freed with g_list_free_full() using g_object_unref() as
+ * #GDestroyNotify function.
+ *
+ * Since: 1.6
  */
 GList *
 mm_modem_voice_list_calls_sync (MMModemVoice *self,
@@ -304,12 +329,16 @@
 /**
  * mm_modem_voice_create_call_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_create_call().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_create_call().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_create_call().
  *
- * Returns: (transfer full): A newly created #MMCall, or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A newly created #MMCall, or %NULL if @error is set.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.6
  */
 MMCall *
 mm_modem_voice_create_call_finish (MMModemVoice *self,
@@ -379,15 +408,21 @@
  * @self: A #MMModemVoice.
  * @properties: A ##MMCallProperties object with the properties to use.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously creates a new #MMCall in the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_create_call_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_create_call_finish() to get the result of the operation.
  *
- * See mm_modem_voice_create_call_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_create_call_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.6
  */
 void
 mm_modem_voice_create_call (MMModemVoice *self,
@@ -422,10 +457,13 @@
  *
  * Synchronously creates a new #MMCall in the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_create_call()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_create_call() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A newly created #MMCall, or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): A newly created #MMCall, or %NULL if @error is set.
+ * The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.6
  */
 MMCall *
 mm_modem_voice_create_call_sync (MMModemVoice *self,
@@ -468,12 +506,15 @@
 /**
  * mm_modem_voice_delete_call_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_delete_call().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_delete_call().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_delete_call().
  *
  * Returns: %TRUE if the call was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_modem_voice_delete_call_finish (MMModemVoice *self,
@@ -490,15 +531,21 @@
  * @self: A #MMModemVoice.
  * @call: Path of the #MMCall to delete.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously deletes a given #MMCall from the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_delete_call_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_delete_call_finish() to get the result of the operation.
  *
- * See mm_modem_voice_delete_call_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_delete_call_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.6
  */
 void
 mm_modem_voice_delete_call (MMModemVoice *self,
@@ -525,10 +572,12 @@
 
  * Synchronously deletes a given #MMCall from the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_delete_call()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_delete_call() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the CALL was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.6
  */
 gboolean
 mm_modem_voice_delete_call_sync (MMModemVoice *self,
@@ -549,12 +598,14 @@
 /**
  * mm_modem_voice_hold_and_accept_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_hold_and_accept().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_hold_and_accept().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_hold_and_accept().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -571,15 +622,20 @@
  * mm_modem_voice_hold_and_accept:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously puts all active calls on hold and accepts the next waiting or held call.
+ * Asynchronously puts all active calls on hold and accepts the next waiting or
+ * held call.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_hold_and_accept_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_hold_and_accept_finish() to get the result of the operation.
  *
- * See mm_modem_voice_hold_and_accept_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_hold_and_accept_sync() for the synchronous, blocking
+ * version of this method.
  *
  * Since: 1.12
  */
@@ -603,12 +659,14 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously puts all active calls on hold and accepts the next waiting or held call.
+ * Synchronously puts all active calls on hold and accepts the next waiting or
+ * held call.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_hold_and_accept()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_hold_and_accept() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -628,12 +686,14 @@
 /**
  * mm_modem_voice_hangup_and_accept_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_hangup_and_accept().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_hangup_and_accept().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_hangup_and_accept().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -650,15 +710,20 @@
  * mm_modem_voice_hangup_and_accept:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously hangs up all active calls and accepts the next waiting or held call.
+ * Asynchronously hangs up all active calls and accepts the next waiting or held
+ * call.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_hangup_and_accept_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_hangup_and_accept_finish() to get the result of the operation.
  *
- * See mm_modem_voice_hangup_and_accept_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_hangup_and_accept_sync() for the synchronous, blocking
+ * version of this method.
  *
  * Since: 1.12
  */
@@ -682,12 +747,14 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously hangs up all active calls and accepts the next waiting or held call.
+ * Synchronously hangs up all active calls and accepts the next waiting or held
+ * call.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_hangup_and_accept()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_hangup_and_accept() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -707,12 +774,14 @@
 /**
  * mm_modem_voice_hangup_all_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_hangup_all().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_hangup_all().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_hangup_all().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -729,15 +798,19 @@
  * mm_modem_voice_hangup_all:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously hangs up all ongoing (active, waiting, held) calls.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_hangup_all_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_hangup_all_finish() to get the result of the operation.
  *
- * See mm_modem_voice_hangup_all_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_hangup_all_sync() for the synchronous, blocking version of
+ * this method.
  *
  * Since: 1.12
  */
@@ -763,10 +836,11 @@
  *
  * Synchronously hangs up all ongoing (active, waiting, held) calls.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_hangup_all()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_hangup_all() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -786,12 +860,14 @@
 /**
  * mm_modem_voice_transfer_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_transfer().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_transfer().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_transfer().
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -808,15 +884,19 @@
  * mm_modem_voice_transfer:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously joins all active and held calls, and disconnects from them.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_transfer_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_transfer_finish() to get the result of the operation.
  *
- * See mm_modem_voice_transfer_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_transfer_sync() for the synchronous, blocking version of
+ * this method.
  *
  * Since: 1.12
  */
@@ -842,10 +922,11 @@
  *
  * Synchronously joins all active and held calls, and disconnects from them.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_transfer()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_transfer() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation was successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -865,12 +946,14 @@
 /**
  * mm_modem_voice_call_waiting_setup_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_call_waiting_setup().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_call_waiting_setup().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_call_waiting_setup().
  *
  * Returns: %TRUE if  @status is set, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -888,15 +971,20 @@
  * @self: A #MMModemVoice.
  * @enable: Whether the call waiting service should be enabled.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously enables or disables the call waiting network service.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_call_waiting_setup_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_call_waiting_setup_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_voice_call_waiting_setup_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_call_waiting_setup_sync() for the synchronous, blocking
+ * version of this method.
  *
  * Since: 1.12
  */
@@ -925,10 +1013,12 @@
  *
  * Synchronously enables or disables the call waiting network service.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_call_waiting_setup()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_call_waiting_setup() for the asynchronous version of this
+ * method.
  *
  * Returns: %TRUE if the operation is successful, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -950,13 +1040,15 @@
 /**
  * mm_modem_voice_call_waiting_query_finish:
  * @self: A #MMModemVoice.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_voice_call_waiting_query().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_voice_call_waiting_query().
  * @status: Output location where to store the status.
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_voice_call_waiting_query().
  *
  * Returns: %TRUE if @status is set, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
@@ -974,15 +1066,20 @@
  * mm_modem_voice_call_waiting_query:
  * @self: A #MMModemVoice.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously queries the status of the call waiting network service.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_voice_call_waiting_query_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_voice_call_waiting_query_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_voice_call_waiting_query_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_voice_call_waiting_query_sync() for the synchronous, blocking
+ * version of this method.
  *
  * Since: 1.12
  */
@@ -1009,10 +1106,12 @@
  *
  * Synchronously queries the status of the call waiting network service.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_voice_call_waiting_query()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_voice_call_waiting_query() for the asynchronous version of this
+ * method.
  *
  * Returns: %TRUE if @status is set, %FALSE if @error is set.
+ *
  * Since: 1.12
  */
 gboolean
diff --git a/libmm-glib/mm-modem.c b/libmm-glib/mm-modem.c
index 9aab453..9a9dbc6 100644
--- a/libmm-glib/mm-modem.c
+++ b/libmm-glib/mm-modem.c
@@ -83,7 +83,10 @@
  *
  * Gets the DBus path of the #MMObject which implements this interface.
  *
- * Returns: (transfer none): The DBus path of the #MMObject object. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The DBus path of the #MMObject object. Do not free
+ * the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_path (MMModem *self)
@@ -98,9 +101,13 @@
  * mm_modem_dup_path:
  * @self: A #MMModem.
  *
- * Gets a copy of the DBus path of the #MMObject object which implements this interface.
+ * Gets a copy of the DBus path of the #MMObject object which implements this
+ * interface.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_path (MMModem *self)
@@ -124,12 +131,15 @@
  *
  * Gets the DBus path of the #MMSim handled in this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_sim_path() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_sim_path() if on another thread.</warning>
  *
- * Returns: (transfer none): The DBus path of the #MMSim handled in this #MMModem, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The DBus path of the #MMSim handled in this
+ * #MMModem, or %NULL if none available. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_sim_path (MMModem *self)
@@ -145,7 +155,11 @@
  *
  * Gets a copy of the DBus path of the #MMSim handled in this #MMModem.
  *
- * Returns: (transfer full): The DBus path of the #MMSim handled in this #MMModem, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMSim handled in this
+ * #MMModem, or %NULL if none available. The returned value should be freed
+ * with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_sim_path (MMModem *self)
@@ -228,12 +242,19 @@
 /**
  * mm_modem_get_supported_capabilities:
  * @self: A #MMModem.
- * @capabilities: (out) (array length=n_capabilities): Return location for the array of #MMModemCapability values. The returned array should be freed with g_free() when no longer needed.
- * @n_capabilities: (out): Return location for the number of values in @capabilities.
+ * @capabilities: (out) (array length=n_capabilities): Return location for the
+ *  array of #MMModemCapability values. The returned array should be freed with
+ *  g_free() when no longer needed.
+ * @n_capabilities: (out): Return location for the number of values in
+ *  @capabilities.
  *
- * Gets the list of combinations of generic families of access technologies supported by this #MMModem.
+ * Gets the list of combinations of generic families of access technologies
+ * supported by this #MMModem.
  *
- * Returns: %TRUE if @capabilities and @n_capabilities are set, %FALSE otherwise.
+ * Returns: %TRUE if @capabilities and @n_capabilities are set, %FALSE
+ * otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_supported_capabilities (MMModem *self,
@@ -248,12 +269,19 @@
 /**
  * mm_modem_peek_supported_capabilities:
  * @self: A #MMModem.
- * @capabilities: (out) (array length=n_capabilities): Return location for the array of #MMModemCapability values. Do not free the returned array, it is owned by @self.
- * @n_capabilities: (out): Return location for the number of values in @capabilities.
+ * @capabilities: (out) (array length=n_capabilities): Return location for the
+ *  array of #MMModemCapability values. Do not free the returned array, it is
+ *  owned by @self.
+ * @n_capabilities: (out): Return location for the number of values in
+ * @capabilities.
  *
- * Gets the list of combinations of generic families of access technologies supported by this #MMModem.
+ * Gets the list of combinations of generic families of access technologies
+ * supported by this #MMModem.
  *
- * Returns: %TRUE if @capabilities and @n_capabilities are set, %FALSE otherwise.
+ * Returns: %TRUE if @capabilities and @n_capabilities are set, %FALSE
+ * otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_peek_supported_capabilities (MMModem *self,
@@ -278,10 +306,12 @@
  * mm_modem_get_current_capabilities:
  * @self: A #MMModem.
  *
- * Gets the list of generic families of access technologies supported by this #MMModem
- * without a firmware reload or reinitialization.
+ * Gets the list of generic families of access technologies supported by this
+ * #MMModem without a firmware reload or reinitialization.
  *
  * Returns: A bitmask of #MMModemCapability flags.
+ *
+ * Since: 1.0
  */
 MMModemCapability
 mm_modem_get_current_capabilities (MMModem *self)
@@ -297,7 +327,8 @@
  * mm_modem_get_max_bearers:
  * @self: a #MMModem.
  *
- * Gets the maximum number of defined packet data bearers this #MMModem supports.
+ * Gets the maximum number of defined packet data bearers this #MMModem
+ * supports.
  *
  * This is not the number of active/connected bearers the modem supports,
  * but simply the number of bearers that may be defined at any given time.
@@ -307,6 +338,8 @@
  * CDMA2000-capable) also typically support three or more.
  *
  * Returns: the maximum number of defined packet data bearers.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_get_max_bearers (MMModem *self)
@@ -329,6 +362,8 @@
  * at least two active bearers.
  *
  * Returns: the maximum number of defined packet data bearers.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_get_max_active_bearers (MMModem *self)
@@ -346,12 +381,15 @@
  *
  * Gets the DBus paths of the #MMBearer handled in this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_bearer_paths() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_bearer_paths() if on another thread.</warning>
  *
- * Returns: (transfer none): The DBus paths of the #MMBearer handled in this #MMModem, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The DBus paths of the #MMBearer handled in this
+ * #MMModem, or %NULL if none available. Do not free the returned value, it
+ * belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar * const *
 mm_modem_get_bearer_paths (MMModem *self)
@@ -367,7 +405,11 @@
  *
  * Gets a copy of the DBus paths of the #MMBearer handled in this #MMModem.
  *
- * Returns: (transfer full): The DBus paths of the #MMBearer handled in this #MMModem, or %NULL if none available. The returned value should be freed with g_strfreev().
+ * Returns: (transfer full): The DBus paths of the #MMBearer handled in this
+ * #MMModem, or %NULL if none available. The returned value should be freed
+ * with g_strfreev().
+ *
+ * Since: 1.0
  */
 gchar **
 mm_modem_dup_bearer_paths (MMModem *self)
@@ -385,12 +427,14 @@
  *
  * Gets the equipment manufacturer, as reported by this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_manufacturer() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_manufacturer() if on another thread.</warning>
  *
- * Returns: (transfer none): The equipment manufacturer, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The equipment manufacturer, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_manufacturer (MMModem *self)
@@ -407,7 +451,10 @@
  *
  * Gets a copy of the equipment manufacturer, as reported by this #MMModem.
  *
- * Returns: (transfer full): The equipment manufacturer, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The equipment manufacturer, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_manufacturer (MMModem *self)
@@ -426,12 +473,14 @@
  *
  * Gets the equipment model, as reported by this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_model() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_model() if on another thread.</warning>
  *
- * Returns: (transfer none): The equipment model, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The equipment model, or %NULL if none available.
+ * Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_model (MMModem *self)
@@ -448,7 +497,10 @@
  *
  * Gets a copy of the equipment model, as reported by this #MMModem.
  *
- * Returns: (transfer full): The equipment model, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The equipment model, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_model (MMModem *self)
@@ -467,12 +519,14 @@
  *
  * Gets the equipment revision, as reported by this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_revision() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_revision() if on another thread.</warning>
  *
- * Returns: (transfer none): The equipment revision, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The equipment revision, or %NULL if none available.
+ * Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_revision (MMModem *self)
@@ -489,7 +543,10 @@
  *
  * Gets a copy of the equipment revision, as reported by this #MMModem.
  *
- * Returns: (transfer full): The equipment revision, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The equipment revision, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_revision (MMModem *self)
@@ -506,14 +563,17 @@
  * mm_modem_get_carrier_configuration:
  * @self: A #MMModem.
  *
- * Gets the carrier-specific configuration (MCFG) in use, as reported by this #MMModem.
+ * Gets the carrier-specific configuration (MCFG) in use, as reported by this
+ * #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_carrier_configuration() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_carrier_configuration() if on another thread.</warning>
  *
- * Returns: (transfer none): The carrier configuration, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The carrier configuration, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.12
  */
 const gchar *
 mm_modem_get_carrier_configuration (MMModem *self)
@@ -528,9 +588,13 @@
  * mm_modem_dup_carrier_configuration:
  * @self: A #MMModem.
  *
- * Gets a copy of the carrier-specific configuration (MCFG) in use, as reported by this #MMModem.
+ * Gets a copy of the carrier-specific configuration (MCFG) in use, as reported
+ * by this #MMModem.
  *
- * Returns: (transfer full): The carrier configuration, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The carrier configuration, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.12
  */
 gchar *
 mm_modem_dup_carrier_configuration (MMModem *self)
@@ -547,14 +611,17 @@
  * mm_modem_get_carrier_configuration_revision:
  * @self: A #MMModem.
  *
- * Gets the carrier-specific configuration revision in use, as reported by this #MMModem.
+ * Gets the carrier-specific configuration revision in use, as reported by this
+ * #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_carrier_configuration() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_carrier_configuration() if on another thread.</warning>
  *
- * Returns: (transfer none): The carrier configuration revision, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The carrier configuration revision, or %NULL if
+ * none available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.12
  */
 const gchar *
 mm_modem_get_carrier_configuration_revision (MMModem *self)
@@ -569,9 +636,13 @@
  * mm_modem_dup_carrier_configuration_revision:
  * @self: A #MMModem.
  *
- * Gets a copy of the carrier-specific configuration revision in use, as reported by this #MMModem.
+ * Gets a copy of the carrier-specific configuration revision in use, as
+ * reported by this #MMModem.
  *
- * Returns: (transfer full): The carrier configuration revision, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The carrier configuration revision, or %NULL if
+ * none available. The returned value should be freed with g_free().
+ *
+ * Since: 1.12
  */
 gchar *
 mm_modem_dup_carrier_configuration_revision (MMModem *self)
@@ -590,12 +661,14 @@
  *
  * Gets the equipment hardware revision, as reported by this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_hardware_revision() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_hardware_revision() if on another thread.</warning>
  *
- * Returns: (transfer none): The equipment hardware revision, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The equipment hardware revision, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.8
  */
 const gchar *
 mm_modem_get_hardware_revision (MMModem *self)
@@ -612,7 +685,10 @@
  *
  * Gets a copy of the equipment hardware revision, as reported by this #MMModem.
  *
- * Returns: (transfer full): The equipment hardware revision, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The equipment hardware revision, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.8
  */
 gchar *
 mm_modem_dup_hardware_revision (MMModem *self)
@@ -640,12 +716,14 @@
  * This is not the device's IMEI or ESN since those may not be available
  * before unlocking the device via a PIN.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_device_identifier() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_device_identifier() if on another thread.</warning>
  *
- * Returns: (transfer none): The device identifier, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The device identifier, or %NULL if none available.
+ * Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_device_identifier (MMModem *self)
@@ -660,8 +738,9 @@
  * mm_modem_dup_device_identifier:
  * @self: A #MMModem.
  *
- * Gets a copy of a best-effort device identifier based on various device information
- * like model name, firmware revision, USB/PCI/PCMCIA IDs, and other properties.
+ * Gets a copy of a best-effort device identifier based on various device
+ * information like model name, firmware revision, USB/PCI/PCMCIA IDs, and other
+ * properties.
  *
  * This ID is not guaranteed to be unique and may be shared between
  * identical devices with the same firmware, but is intended to be "unique
@@ -671,7 +750,10 @@
  * This is not the device's IMEI or ESN since those may not be available
  * before unlocking the device via a PIN.
  *
- * Returns: (transfer full): The device identifier, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The device identifier, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_device_identifier (MMModem *self)
@@ -691,12 +773,14 @@
  * Gets the physical modem device reference (ie, USB, PCI, PCMCIA device), which
  * may be dependent upon the operating system.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_device() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_device() if on another thread.</warning>
  *
- * Returns: (transfer none): The device, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The device, or %NULL if none available. Do not free
+ * the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_device (MMModem *self)
@@ -711,10 +795,13 @@
  * mm_modem_dup_device:
  * @self: A #MMModem.
  *
- * Gets a copy of the physical modem device reference (ie, USB, PCI, PCMCIA device), which
- * may be dependent upon the operating system.
+ * Gets a copy of the physical modem device reference (ie, USB, PCI, PCMCIA
+ * device), which may be dependent upon the operating system.
  *
- * Returns: (transfer full): The device, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The device, or %NULL if none available. The
+ * returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_device (MMModem *self)
@@ -731,15 +818,17 @@
  * mm_modem_get_drivers:
  * @self: A #MMModem.
  *
- * Gets the Operating System device drivers handling communication with the modem
- * hardware.
+ * Gets the Operating System device drivers handling communication with the
+ * modem hardware.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_drivers() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_drivers() if on another thread.</warning>
  *
- * Returns: (transfer none): The drivers, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The drivers, or %NULL if none available. Do not
+ * free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar * const *
 mm_modem_get_drivers (MMModem *self)
@@ -753,10 +842,13 @@
  * mm_modem_dup_drivers:
  * @self: A #MMModem.
  *
- * Gets a copy of the Operating System device driver handling communication with the modem
- * hardware.
+ * Gets a copy of the Operating System device driver handling communication with
+ * the modem hardware.
  *
- * Returns: (transfer full): The drivers, or %NULL if none available. The returned value should be freed with g_strfreev().
+ * Returns: (transfer full): The drivers, or %NULL if none available. The
+ * returned value should be freed with g_strfreev().
+ *
+ * Since: 1.0
  */
 gchar **
 mm_modem_dup_drivers (MMModem *self)
@@ -774,12 +866,14 @@
  *
  * Gets the name of the plugin handling this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_plugin() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_plugin() if on another thread.</warning>
  *
- * Returns: (transfer none): The name of the plugin, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The name of the plugin, or %NULL if none
+ *available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_plugin (MMModem *self)
@@ -796,7 +890,10 @@
  *
  * Gets a copy of the name of the plugin handling this #MMModem.
  *
- * Returns: (transfer full): The name of the plugin, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The name of the plugin, or %NULL if none available.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_plugin (MMModem *self)
@@ -815,12 +912,14 @@
  *
  * Gets the name of the primary port controlling this #MMModem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_primary_port() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_primary_port() if on another thread.</warning>
  *
- * Returns: (transfer none): The name of the primary port. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The name of the primary port. Do not free the
+ * returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_primary_port (MMModem *self)
@@ -837,7 +936,10 @@
  *
  * Gets a copy of the name of the primary port controlling this #MMModem.
  *
- * Returns: (transfer full): The name of the primary port. The returned value should be freed with g_free().
+ * Returns: (transfer full): The name of the primary port. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_primary_port (MMModem *self)
@@ -929,12 +1031,16 @@
 /**
  * mm_modem_peek_ports:
  * @self: A #MMModem.
- * @ports: (out) (array length=n_ports) (transfer none): Return location for the array of #MMModemPortInfo values. Do not free the returned value, it is owned by @self.
+ * @ports: (out) (array length=n_ports) (transfer none): Return location for the
+ *  array of #MMModemPortInfo values. Do not free the returned value, it is
+ *  owned by @self.
  * @n_ports: (out): Return location for the number of values in @ports.
  *
  * Gets the list of ports in the modem.
  *
  * Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_peek_ports (MMModem *self,
@@ -956,12 +1062,16 @@
 /**
  * mm_modem_get_ports:
  * @self: A #MMModem.
- * @ports: (out) (array length=n_ports): Return location for the array of #MMModemPortInfo values. The returned array should be freed with mm_modem_port_info_array_free() when no longer needed.
+ * @ports: (out) (array length=n_ports): Return location for the array of
+ *  #MMModemPortInfo values. The returned array should be freed with
+ *  mm_modem_port_info_array_free() when no longer needed.
  * @n_ports: (out): Return location for the number of values in @ports.
  *
  * Gets the list of ports in the modem.
  *
  * Returns: %TRUE if @ports and @n_ports are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_ports (MMModem *self,
@@ -986,12 +1096,14 @@
  * This will be the IMEI number for GSM devices and the hex-format ESN/MEID
  * for CDMA devices.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_equipment_identifier() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_equipment_identifier() if on another thread.</warning>
  *
- * Returns: (transfer none): The equipment identifier, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The equipment identifier, or %NULL if none
+ * available. Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_modem_get_equipment_identifier (MMModem *self)
@@ -1011,7 +1123,10 @@
  * This will be the IMEI number for GSM devices and the hex-format ESN/MEID
  * for CDMA devices.
  *
- * Returns: (transfer full): The equipment identifier, or %NULL if none available. The returned value should be freed with g_free().
+ * Returns: (transfer full): The equipment identifier, or %NULL if none
+ * available. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_dup_equipment_identifier (MMModem *self)
@@ -1031,12 +1146,14 @@
  * Gets the list of numbers (e.g. MSISDN in 3GPP) being currently handled by
  * this modem.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_dup_own_numbers() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_dup_own_numbers() if on another thread.</warning>
  *
- * Returns: (transfer none): The list of own numbers or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The list of own numbers or %NULL if none available.
+ * Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.0
  */
 const gchar *const *
 mm_modem_get_own_numbers (MMModem *self)
@@ -1057,7 +1174,10 @@
  * Gets a copy of the list of numbers (e.g. MSISDN in 3GPP) being currently
  * handled by this modem.
  *
- * Returns: (transfer full): The list of own numbers or %NULL if none is available. The returned value should be freed with g_strfreev().
+ * Returns: (transfer full): The list of own numbers or %NULL if none is
+ * available. The returned value should be freed with g_strfreev().
+ *
+ * Since: 1.0
  */
 gchar **
 mm_modem_dup_own_numbers (MMModem *self)
@@ -1083,6 +1203,8 @@
  * Gets current lock state of the #MMModem.
  *
  * Returns: A #MMModemLock value, specifying the current lock state.
+ *
+ * Since: 1.0
  */
 MMModemLock
 mm_modem_get_unlock_required (MMModem *self)
@@ -1149,15 +1271,18 @@
  *
  * Gets a #MMUnlockRetries object, which provides, for each
  * <link linkend="MMModemLock">MMModemLock</link> handled by the modem, the
- * number of PIN tries remaining before the code becomes blocked (requiring a PUK)
- * or permanently blocked.
+ * number of PIN tries remaining before the code becomes blocked (requiring a
+ * PUK) or permanently blocked.
  *
  * <warning>The values reported by @self are not updated when the values in the
  * interface change. Instead, the client is expected to call
  * mm_modem_get_unlock_retries() again to get a new #MMUnlockRetries with the
  * new values.</warning>
  *
- * Returns: (transfer full): A #MMUnlockRetries that must be freed with g_object_unref() or %NULL if unknown.
+ * Returns: (transfer full): A #MMUnlockRetries that must be freed with
+ * g_object_unref() or %NULL if unknown.
+ *
+ * Since: 1.0
  */
 MMUnlockRetries *
 mm_modem_get_unlock_retries (MMModem *self)
@@ -1176,15 +1301,17 @@
  *
  * Gets a #MMUnlockRetries object, which provides, for each
  * <link linkend="MMModemLock">MMModemLock</link> handled by the modem, the
- * number of PIN tries remaining before the code becomes blocked (requiring a PUK)
- * or permanently blocked.
+ * number of PIN tries remaining before the code becomes blocked (requiring a
+ * PUK) or permanently blocked.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_modem_get_unlock_retries() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_modem_get_unlock_retries() if on another thread.</warning>
  *
- * Returns: (transfer none): A #MMUnlockRetries. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): A #MMUnlockRetries. Do not free the returned value,
+ * it belongs to @self.
+ *
+ * Since: 1.0
  */
 MMUnlockRetries *
 mm_modem_peek_unlock_retries (MMModem *self)
@@ -1204,6 +1331,8 @@
  * Gets the overall state of the #MMModem.
  *
  * Returns: A #MMModemState value.
+ *
+ * Since: 1.0
  */
 MMModemState
 mm_modem_get_state (MMModem *self)
@@ -1222,6 +1351,8 @@
  * Gets the reason specifying why the modem is in #MM_MODEM_STATE_FAILED state.
  *
  * Returns: A #MMModemStateFailedReason value.
+ *
+ * Since: 1.0
  */
 MMModemStateFailedReason
 mm_modem_get_state_failed_reason (MMModem *self)
@@ -1240,6 +1371,8 @@
  * Gets the power state of the #MMModem.
  *
  * Returns: A #MMModemPowerState value.
+ *
+ * Since: 1.0
  */
 MMModemPowerState
 mm_modem_get_power_state (MMModem *self)
@@ -1255,10 +1388,12 @@
  * mm_modem_get_access_technologies:
  * @self: A #MMModem.
  *
- * Gets the current network access technology used by the #MMModem to communicate
- * with the network.
+ * Gets the current network access technology used by the #MMModem to
+ * communicate with the network.
  *
  * Returns: A ##MMModemAccessTechnology value.
+ *
+ * Since: 1.0
  */
 MMModemAccessTechnology
 mm_modem_get_access_technologies (MMModem *self)
@@ -1273,14 +1408,17 @@
 /**
  * mm_modem_get_signal_quality:
  * @self: A #MMModem.
- * @recent: (out): Return location for the flag specifying if the signal quality value was recent or not.
+ * @recent: (out): Return location for the flag specifying if the signal quality
+ *  value was recent or not.
  *
- * Gets the signal quality value in percent (0 - 100) of the dominant access technology
- * the #MMModem is using to communicate with the network.
+ * Gets the signal quality value in percent (0 - 100) of the dominant access
+ * technology the #MMModem is using to communicate with the network.
  *
  * Always 0 for POTS devices.
  *
  * Returns: The signal quality.
+ *
+ * Since: 1.0
  */
 guint
 mm_modem_get_signal_quality (MMModem *self,
@@ -1378,12 +1516,16 @@
 /**
  * mm_modem_get_supported_modes:
  * @self: A #MMModem.
- * @modes: (out) (array length=n_modes): Return location for the array of #MMModemModeCombination structs. The returned array should be freed with g_free() when no longer needed.
+ * @modes: (out) (array length=n_modes): Return location for the array of
+ *  #MMModemModeCombination structs. The returned array should be freed with
+ *  g_free() when no longer needed.
  * @n_modes: (out): Return location for the number of values in @modes.
  *
  * Gets the list of supported mode combinations.
  *
  * Returns: %TRUE if @modes and @n_modes are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_supported_modes (MMModem *self,
@@ -1400,12 +1542,16 @@
 /**
  * mm_modem_peek_supported_modes:
  * @self: A #MMModem.
- * @modes: (out) (array length=n_modes): Return location for the array of #MMModemModeCombination values. Do not free the returned array, it is owned by @self.
+ * @modes: (out) (array length=n_modes): Return location for the array of
+ *  #MMModemModeCombination values. Do not free the returned array, it is owned
+ *  by @self.
  * @n_modes: (out): Return location for the number of values in @modes.
  *
  * Gets the list of supported mode combinations.
  *
  * Returns: %TRUE if @modes and @n_modes are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_peek_supported_modes (MMModem *self,
@@ -1437,6 +1583,8 @@
  * well as the preferred one, if any.
  *
  * Returns: %TRUE if @allowed and @preferred are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_current_modes (MMModem *self,
@@ -1534,14 +1682,19 @@
 /**
  * mm_modem_get_supported_bands:
  * @self: A #MMModem.
- * @bands: (out) (array length=n_bands): Return location for the array of #MMModemBand values. The returned array should be freed with g_free() when no longer needed.
+ * @bands: (out) (array length=n_bands): Return location for the array of
+ *  #MMModemBand values. The returned array should be freed with g_free() when
+ *  no longer needed.
  * @n_bands: (out): Return location for the number of values in @bands.
  *
- * Gets the list of radio frequency and technology bands supported by the #MMModem.
+ * Gets the list of radio frequency and technology bands supported by the
+ * #MMModem.
  *
  * For POTS devices, only #MM_MODEM_BAND_ANY will be returned in @bands.
  *
  * Returns: %TRUE if @bands and @n_bands are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_supported_bands (MMModem *self,
@@ -1558,14 +1711,18 @@
 /**
  * mm_modem_peek_supported_bands:
  * @self: A #MMModem.
- * @bands: (out) (array length=n_bands): Return location for the array of #MMModemBand values. Do not free the returned array, it is owned by @self.
+ * @bands: (out) (array length=n_bands): Return location for the array of
+ *  #MMModemBand values. Do not free the returned array, it is owned by @self.
  * @n_bands: (out): Return location for the number of values in @bands.
  *
- * Gets the list of radio frequency and technology bands supported by the #MMModem.
+ * Gets the list of radio frequency and technology bands supported by the
+ * #MMModem.
  *
  * For POTS devices, only #MM_MODEM_BAND_ANY will be returned in @bands.
  *
  * Returns: %TRUE if @bands and @n_bands are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_peek_supported_bands (MMModem *self,
@@ -1656,15 +1813,19 @@
 /**
  * mm_modem_get_current_bands:
  * @self: A #MMModem.
- * @bands: (out) (array length=n_bands): Return location for the array of #MMModemBand values. The returned array should be freed with g_free() when no longer needed.
+ * @bands: (out) (array length=n_bands): Return location for the array of
+ *  #MMModemBand values. The returned array should be freed with g_free() when
+ *  no longer needed.
  * @n_bands: (out): Return location for the number of values in @bands.
  *
- * Gets the list of radio frequency and technology bands the #MMModem is currently
- * using when connecting to a network.
+ * Gets the list of radio frequency and technology bands the #MMModem is
+ * currently using when connecting to a network.
  *
  * For POTS devices, only the #MM_MODEM_BAND_ANY band is supported.
  *
  * Returns: %TRUE if @bands and @n_bands are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_get_current_bands (MMModem *self,
@@ -1681,15 +1842,18 @@
 /**
  * mm_modem_peek_current_bands:
  * @self: A #MMModem.
- * @bands: (out) (array length=n_bands): Return location for the array of #MMModemBand values. Do not free the returned value, it is owned by @self.
+ * @bands: (out) (array length=n_bands): Return location for the array of
+ *  #MMModemBand values. Do not free the returned value, it is owned by @self.
  * @n_bands: (out): Return location for the number of values in @bands.
  *
- * Gets the list of radio frequency and technology bands the #MMModem is currently
- * using when connecting to a network.
+ * Gets the list of radio frequency and technology bands the #MMModem is
+ * currently using when connecting to a network.
  *
  * For POTS devices, only the #MM_MODEM_BAND_ANY band is supported.
  *
  * Returns: %TRUE if @bands and @n_bands are set, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_peek_current_bands (MMModem *self,
@@ -1717,6 +1881,8 @@
  * Gets the list of supported IP families.
  *
  * Returns: A bitmask of #MMBearerIpFamily values.
+ *
+ * Since: 1.0
  */
 MMBearerIpFamily
 mm_modem_get_supported_ip_families (MMModem *self)
@@ -1731,12 +1897,15 @@
 /**
  * mm_modem_enable_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_enable().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_enable().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_enable().
  *
  * Returns: %TRUE if the modem was properly enabled, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_enable_finish (MMModem *self,
@@ -1752,17 +1921,23 @@
  * mm_modem_enable:
  * @self: A #MMModem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously tries to enable the #MMModem. When enabled, the modem's radio is
- * powered on and data sessions, voice calls, location services, and Short Message
- * Service may be available.
+ * Asynchronously tries to enable the #MMModem. When enabled, the modem's radio
+ * is powered on and data sessions, voice calls, location services, and Short
+ * Message Service may be available.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_enable_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_enable_finish() to get the result of the operation.
  *
- * See mm_modem_enable_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_enable_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_enable (MMModem *self,
@@ -1781,14 +1956,16 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously tries to enable the #MMModem. When enabled, the modem's radio is
- * powered on and data sessions, voice calls, location services, and Short Message
- * Service may be available.
+ * Synchronously tries to enable the #MMModem. When enabled, the modem's radio
+ * is powered on and data sessions, voice calls, location services, and Short
+ * Message Service may be available.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_enable()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_enable() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the modem was properly enabled, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_enable_sync (MMModem *self,
@@ -1805,12 +1982,15 @@
 /**
  * mm_modem_disable_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_disable().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_disable().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_disable().
  *
  * Returns: %TRUE if the modem was properly disabled, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_disable_finish (MMModem *self,
@@ -1826,16 +2006,22 @@
  * mm_modem_disable:
  * @self: A #MMModem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously tries to disable the #MMModem. When disabled, the modem enters
  * low-power state and no network-related operations are available.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_disable_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_disable_finish() to get the result of the operation.
  *
- * See mm_modem_disable_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_disable_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_disable (MMModem *self,
@@ -1857,10 +2043,12 @@
  * Synchronously tries to disable the #MMModem. When disabled, the modem enters
  * low-power state and no network-related operations are available.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_disable()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_disable() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the modem was properly disabled, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_disable_sync (MMModem *self,
@@ -1897,12 +2085,16 @@
 /**
  * mm_modem_list_bearers_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_list_bearers().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_list_bearers().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_list_bearers().
  *
- * Returns: (transfer full) (element-type ModemManager.Bearer): The list of #MMBearer objects, or %NULL if either none found or if @error is set.
+ * Returns: (transfer full) (element-type ModemManager.Bearer): The list of
+ * #MMBearer objects, or %NULL if either none found or if @error is set.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_list_bearers_finish (MMModem *self,
@@ -1985,15 +2177,21 @@
  * mm_modem_list_bearers:
  * @self: A #MMModem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously lists the packet data bearers in the #MMModem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_list_bearers_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_list_bearers_finish() to get the result of the operation.
  *
- * See mm_modem_list_bearers_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_list_bearers_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_list_bearers (MMModem *self,
@@ -2034,10 +2232,13 @@
  *
  * Synchronously lists the packet data bearers in the #MMModem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_list_bearers()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_list_bearers() for the asynchronous version of this method.
  *
- * Returns: (transfer full) (element-type ModemManager.Bearer): The list of #MMBearer objects, or %NULL if either none found or if @error is set.
+ * Returns: (transfer full) (element-type ModemManager.Bearer): The list of
+ * #MMBearer objects, or %NULL if either none found or if @error is set.
+ *
+ * Since: 1.0
  */
 GList *
 mm_modem_list_bearers_sync (MMModem *self,
@@ -2088,12 +2289,16 @@
 /**
  * mm_modem_create_bearer_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_create_bearer().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_create_bearer().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_create_bearer().
  *
- * Returns: (transfer full): A newly created #MMBearer, or %NULL if @error is set.
+ * Returns: (transfer full): A newly created #MMBearer, or %NULL if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 MMBearer *
 mm_modem_create_bearer_finish (MMModem *self,
@@ -2163,7 +2368,8 @@
  * @self: A #MMModem.
  * @properties: A #MMBearerProperties object with the properties to use.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously creates a new packet data bearer in the #MMModem.
@@ -2171,12 +2377,18 @@
  * This request may fail if the modem does not support additional bearers,
  * if too many bearers are already defined, or if @properties are invalid.
  *
- * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link> to check which properties may be passed.
+ * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link>
+ * to check which properties may be passed.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_create_bearer_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_create_bearer_finish() to get the result of the operation.
  *
- * See mm_modem_create_bearer_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_create_bearer_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_create_bearer (MMModem *self,
@@ -2216,12 +2428,16 @@
  * This request may fail if the modem does not support additional bearers,
  * if too many bearers are already defined, or if @properties are invalid.
  *
- * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link> to check which properties may be passed.
+ * See <link linkend="gdbus-method-org-freedesktop-ModemManager1-Modem.CreateBearer">CreateBearer</link>
+ * to check which properties may be passed.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_create_bearer()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_create_bearer() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A newly created #MMBearer, or %NULL if @error is set.
+ * Returns: (transfer full): A newly created #MMBearer, or %NULL if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 MMBearer *
 mm_modem_create_bearer_sync (MMModem *self,
@@ -2264,12 +2480,15 @@
 /**
  * mm_modem_delete_bearer_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_delete_bearer().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_delete_bearer().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_delete_bearer().
  *
  * Returns: %TRUE if the bearer was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_delete_bearer_finish (MMModem *self,
@@ -2286,15 +2505,21 @@
  * @self: A #MMModem.
  * @bearer: Path of the bearer to delete.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously deletes a given bearer from the #MMModem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_delete_bearer_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_delete_bearer_finish() to get the result of the operation.
  *
- * See mm_modem_delete_bearer_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_delete_bearer_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_delete_bearer (MMModem *self,
@@ -2317,10 +2542,12 @@
 
  * Synchronously deletes a given bearer from the #MMModem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_delete_bearer()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_delete_bearer() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the bearer was deleted, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_delete_bearer_sync (MMModem *self,
@@ -2338,12 +2565,15 @@
 /**
  * mm_modem_reset_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_reset().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_reset().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_reset().
  *
  * Returns: %TRUE if the reset was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_reset_finish (MMModem *self,
@@ -2359,16 +2589,22 @@
  * mm_modem_reset:
  * @self: A #MMModem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously clears non-persistent configuration and state, and returns the device to
- * a newly-powered-on state.
+ * Asynchronously clears non-persistent configuration and state, and returns the
+ * device to a newly-powered-on state.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_reset_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_reset_finish() to get the result of the operation.
  *
- * See mm_modem_reset_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_reset_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_reset (MMModem *self,
@@ -2387,13 +2623,15 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously clears non-persistent configuration and state, and returns the device to
- * a newly-powered-on state.
+ * Synchronously clears non-persistent configuration and state, and returns the
+ * device to a newly-powered-on state.
  *
  * The calling thread is blocked until a reply is received. See mm_modem_reset()
  * for the asynchronous version of this method.
  *
  * Returns: %TRUE if the reset was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_reset_sync (MMModem *self,
@@ -2410,12 +2648,15 @@
 /**
  * mm_modem_factory_reset_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_factory_reset().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_factory_reset().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_factory_reset().
  *
  * Returns: %TRUE if the factory_reset was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_factory_reset_finish (MMModem *self,
@@ -2432,16 +2673,22 @@
  * @self: A #MMModem.
  * @code: Carrier-supplied code required to reset the modem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously clears the modem's configuration (including persistent configuration and
- * state), and returns the device to a factory-default state.
+ * Asynchronously clears the modem's configuration (including persistent
+ * configuration and state), and returns the device to a factory-default state.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_factory_reset_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_factory_reset_finish() to get the result of the operation.
  *
- * See mm_modem_factory_reset_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_factory_reset_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_factory_reset (MMModem *self,
@@ -2462,13 +2709,15 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously clears the modem's configuration (including persistent configuration and
- * state), and returns the device to a factory-default state.
+ * Synchronously clears the modem's configuration (including persistent
+ * configuration and state), and returns the device to a factory-default state.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_factory_reset()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_factory_reset() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the factory reset was successful, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_factory_reset_sync (MMModem *self,
@@ -2486,12 +2735,17 @@
 /**
  * mm_modem_command_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_command().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_command().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_command().
  *
- * Returns: (transfer full): A newly allocated string with the reply to the command, or #NULL if @error is set. The returned value should be freed with g_free().
+ * Returns: (transfer full): A newly allocated string with the reply to the
+ * command, or #NULL if @error is set. The returned value should be freed with
+ * g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_command_finish (MMModem *self,
@@ -2514,15 +2768,21 @@
  * @cmd: AT command to run.
  * @timeout: Maximum time to wait for the response, in seconds.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously runs an AT command in the modem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_command_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_command_finish() to get the result of the operation.
  *
- * See mm_modem_command_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_command_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_command (MMModem *self,
@@ -2550,10 +2810,14 @@
  *
  * Synchronously runs an AT command in the modem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_command()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_command() for the asynchronous version of this method.
  *
- * Returns: (transfer full): A newly allocated string with the reply to the command, or #NULL if @error is set. The returned value should be freed with g_free().
+ * Returns: (transfer full): A newly allocated string with the reply to the
+ * command, or #NULL if @error is set. The returned value should be freed
+ * with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_modem_command_sync (MMModem *self,
@@ -2580,12 +2844,16 @@
 /**
  * mm_modem_set_power_state_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_set_power_state().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_set_power_state().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_set_power_state().
  *
- * Returns: %TRUE if the power state was successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the power state was successfully set, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_power_state_finish (MMModem *self,
@@ -2600,18 +2868,25 @@
 /**
  * mm_modem_set_power_state:
  * @self: A #MMModem.
- * @state: Either %MM_MODEM_POWER_STATE_LOW or %MM_MODEM_POWER_STATE_ON. Every other #MMModemPowerState value is not allowed.
+ * @state: Either %MM_MODEM_POWER_STATE_LOW or %MM_MODEM_POWER_STATE_ON. Every
+ *  other #MMModemPowerState value is not allowed.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously sets the power state of the device. This method can only be
  * used while the modem is in %MM_MODEM_STATE_DISABLED state.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_set_power_state_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_set_power_state_finish() to get the result of the operation.
  *
- * See mm_modem_set_power_state_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_set_power_state_sync() for the synchronous, blocking version of
+ * this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_set_power_state (MMModem *self,
@@ -2628,17 +2903,21 @@
 /**
  * mm_modem_set_power_state_sync:
  * @self: A #MMModem.
- * @state: Either %MM_MODEM_POWER_STATE_LOW or %MM_MODEM_POWER_STATE_ON. Every other #MMModemPowerState value is not allowed.
+ * @state: Either %MM_MODEM_POWER_STATE_LOW or %MM_MODEM_POWER_STATE_ON. Every
+ *  other #MMModemPowerState value is not allowed.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Synchronously sets the power state of the device. This method can only be
  * used while the modem is in %MM_MODEM_STATE_DISABLED state.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_set_power_state()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_set_power_state() for the asynchronous version of this method.
  *
- * Returns: %TRUE if the power state was successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the power state was successfully set, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_power_state_sync (MMModem *self,
@@ -2656,12 +2935,16 @@
 /**
  * mm_modem_set_current_capabilities_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_set_current_capabilities().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_set_current_capabilities().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_set_current_capabilities().
  *
- * Returns: %TRUE if the capabilities were successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the capabilities were successfully set, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_capabilities_finish (MMModem *self,
@@ -2678,15 +2961,23 @@
  * @self: A #MMModem.
  * @capabilities: A #MMModemCapability mask.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously sets the capabilities of the device. A restart of the modem may be required.
+ * Asynchronously sets the capabilities of the device. A restart of the modem
+ * may be required.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_set_current_capabilities_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_set_current_capabilities_finish() to get the result of the
+ * operation.
  *
- * See mm_modem_set_current_capabilities_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_set_current_capabilities_sync() for the synchronous, blocking
+ * version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_set_current_capabilities (MMModem *self,
@@ -2711,12 +3002,17 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously sets the capabilities of the device. A restart of the modem may be required.
+ * Synchronously sets the capabilities of the device. A restart of the modem may
+ * be required.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_set_current_capabilities()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_set_current_capabilities() for the asynchronous version of this
+ * method.
  *
- * Returns: %TRUE if the capabilities were successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the capabilities were successfully set, %FALSE if @error is
+ * set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_capabilities_sync (MMModem *self,
@@ -2738,12 +3034,16 @@
 /**
  * mm_modem_set_current_modes_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_set_current_modes().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_set_current_modes().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_set_current_modes().
  *
- * Returns: %TRUE if the allowed modes were successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the allowed modes were successfully set, %FALSE if @error
+ * is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_modes_finish (MMModem *self,
@@ -2759,18 +3059,25 @@
  * mm_modem_set_current_modes:
  * @self: A #MMModem.
  * @modes: Mask of #MMModemMode values specifying which modes are allowed.
- * @preferred: A #MMModemMode value specifying which of the modes given in @modes is the preferred one, or #MM_MODEM_MODE_NONE if none.
+ * @preferred: A #MMModemMode value specifying which of the modes given in
+ *  @modes is the preferred one, or #MM_MODEM_MODE_NONE if none.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously sets the access technologies (e.g. 2G/3G/4G preference) the device is
- * currently allowed to use when connecting to a network.
+ * Asynchronously sets the access technologies (e.g. 2G/3G/4G preference) the
+ * device is currently allowed to use when connecting to a network.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_set_current_modes_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_set_current_modes_finish() to get the result of the operation.
  *
- * See mm_modem_set_current_modes_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_set_current_modes_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_set_current_modes (MMModem *self,
@@ -2793,17 +3100,21 @@
  * mm_modem_set_current_modes_sync:
  * @self: A #MMModem.
  * @modes: Mask of #MMModemMode values specifying which modes are allowed.
- * @preferred: A #MMModemMode value specifying which of the modes given in @modes is the preferred one, or #MM_MODEM_MODE_NONE if none.
+ * @preferred: A #MMModemMode value specifying which of the modes given in
+ *  @modes is the preferred one, or #MM_MODEM_MODE_NONE if none.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously sets the access technologies (e.g. 2G/3G/4G preference) the device is
- * currently allowed to use when connecting to a network.
+ * Synchronously sets the access technologies (e.g. 2G/3G/4G preference) the
+ * device is currently allowed to use when connecting to a network.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_set_current_modes()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_set_current_modes() for the asynchronous version of this method.
  *
- * Returns: %TRUE if the allowed modes were successfully set, %FALSE if @error is set.
+ * Returns: %TRUE if the allowed modes were successfully set, %FALSE if @error
+ * is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_modes_sync (MMModem *self,
@@ -2825,12 +3136,15 @@
 /**
  * mm_modem_set_current_bands_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_set_current_bands().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_set_current_bands().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_set_current_bands().
  *
  * Returns: %TRUE if the bands were successfully set, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_bands_finish (MMModem *self,
@@ -2848,16 +3162,22 @@
  * @bands: An array of #MMModemBand values specifying which bands are allowed.
  * @n_bands: Number of elements in @bands.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
- * Asynchronously sets the radio frequency and technology bands the device is currently
- * allowed to use when connecting to a network.
+ * Asynchronously sets the radio frequency and technology bands the device is
+ * currently allowed to use when connecting to a network.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_set_current_bands_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_set_current_bands_finish() to get the result of the operation.
  *
- * See mm_modem_set_current_bands_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_set_current_bands_sync() for the synchronous, blocking version
+ * of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_set_current_bands (MMModem *self,
@@ -2884,13 +3204,15 @@
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronously sets the radio frequency and technology bands the device is currently
- * allowed to use when connecting to a network.
+ * Synchronously sets the radio frequency and technology bands the device is
+ * currently allowed to use when connecting to a network.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_set_current_bands()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_set_current_bands() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the bands were successfully set, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_modem_set_current_bands_sync (MMModem *self,
@@ -2913,12 +3235,16 @@
 /**
  * mm_modem_get_sim_finish:
  * @self: A #MMModem.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_get_sim().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_modem_get_sim().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_modem_get_sim().
  *
- * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned
+ * value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSim *
 mm_modem_get_sim_finish (MMModem *self,
@@ -2955,15 +3281,21 @@
  * mm_modem_get_sim:
  * @self: A #MMModem.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously gets the #MMSim object managed by this #MMModem.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_modem_get_sim_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_modem_get_sim_finish() to get the result of the operation.
  *
- * See mm_modem_get_sim_sync() for the synchronous, blocking version of this method.
+ * See mm_modem_get_sim_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_modem_get_sim (MMModem *self,
@@ -3009,10 +3341,13 @@
  *
  * Synchronously gets the #MMSim object managed by this #MMModem.
  *
- * The calling thread is blocked until a reply is received. See mm_modem_get_sim()
- * for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_modem_get_sim() for the asynchronous version of this method.
  *
- * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned value should be freed with g_object_unref().
+ * Returns: (transfer full): a #MMSim or #NULL if @error is set. The returned
+ * value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSim *
 mm_modem_get_sim_sync (MMModem *self,
diff --git a/libmm-glib/mm-network-timezone.c b/libmm-glib/mm-network-timezone.c
index 0a37c0e..b78dde0 100644
--- a/libmm-glib/mm-network-timezone.c
+++ b/libmm-glib/mm-network-timezone.c
@@ -47,6 +47,8 @@
  * Gets the timezone offset (in minutes) reported by the network.
  *
  * Returns: the offset, or %MM_NETWORK_TIMEZONE_OFFSET_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gint
 mm_network_timezone_get_offset (MMNetworkTimezone *self)
@@ -57,6 +59,9 @@
     return self->priv->offset;
 }
 
+/**
+ * mm_network_timezone_set_offset: (skip)
+ */
 void
 mm_network_timezone_set_offset (MMNetworkTimezone *self,
                                 gint offset)
@@ -76,6 +81,8 @@
  * the network.
  *
  * Returns: the offset, or %MM_NETWORK_TIMEZONE_OFFSET_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gint
 mm_network_timezone_get_dst_offset (MMNetworkTimezone *self)
@@ -86,6 +93,9 @@
     return self->priv->dst_offset;
 }
 
+/**
+ * mm_network_timezone_set_dst_offset: (skip)
+ */
 void
 mm_network_timezone_set_dst_offset (MMNetworkTimezone *self,
                                     gint dst_offset)
@@ -103,7 +113,10 @@
  *
  * Gets the number of leap seconds (TAI-UTC), as reported by the network.
  *
- * Returns: the number of leap seconds, or %MM_NETWORK_TIMEZONE_LEAP_SECONDS_UNKNOWN if unknown.
+ * Returns: the number of leap seconds, or
+ * %MM_NETWORK_TIMEZONE_LEAP_SECONDS_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 gint
 mm_network_timezone_get_leap_seconds (MMNetworkTimezone *self)
@@ -114,6 +127,9 @@
     return self->priv->leap_seconds;
 }
 
+/**
+ * mm_network_timezone_set_leap_seconds: (skip)
+ */
 void
 mm_network_timezone_set_leap_seconds (MMNetworkTimezone *self,
                                       gint leap_seconds)
@@ -125,6 +141,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_network_timezone_get_dictionary: (skip)
+ */
 GVariant *
 mm_network_timezone_get_dictionary (MMNetworkTimezone *self)
 {
@@ -161,6 +180,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_network_timezone_new_from_dictionary: (skip)
+ */
 MMNetworkTimezone *
 mm_network_timezone_new_from_dictionary (GVariant *dictionary,
                                          GError **error)
@@ -226,6 +248,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_network_timezone_new: (skip)
+ */
 MMNetworkTimezone *
 mm_network_timezone_new (void)
 {
@@ -236,7 +261,7 @@
 static void
 mm_network_timezone_init (MMNetworkTimezone *self)
 {
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                               MM_TYPE_NETWORK_TIMEZONE,
                                               MMNetworkTimezonePrivate);
 
diff --git a/libmm-glib/mm-network-timezone.h b/libmm-glib/mm-network-timezone.h
index ca485a2..29b4d2e 100644
--- a/libmm-glib/mm-network-timezone.h
+++ b/libmm-glib/mm-network-timezone.h
@@ -36,13 +36,17 @@
  * MM_NETWORK_TIMEZONE_OFFSET_UNKNOWN:
  *
  * Identifier for an unknown timezone offset.
+ *
+ * Since: 1.0
  */
-#define MM_NETWORK_TIMEZONE_OFFSET_UNKNOWN       G_MAXINT32
+#define MM_NETWORK_TIMEZONE_OFFSET_UNKNOWN G_MAXINT32
 
 /**
  * MM_NETWORK_TIMEZONE_LEAP_SECONDS_UNKNOWN:
  *
  * Identifier for an unknown leap seconds value.
+ *
+ * Since: 1.0
  */
 #define MM_NETWORK_TIMEZONE_LEAP_SECONDS_UNKNOWN G_MAXINT32
 
diff --git a/libmm-glib/mm-object.c b/libmm-glib/mm-object.c
index 9015ad3..8041c50 100644
--- a/libmm-glib/mm-object.c
+++ b/libmm-glib/mm-object.c
@@ -47,6 +47,8 @@
  * Gets the DBus path of the #MMObject object.
  *
  * Returns: (transfer none): The DBus path of the #MMObject object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_object_get_path (MMObject *self)
@@ -62,7 +64,10 @@
  *
  * Gets a copy of the DBus path of the #MMObject object.
  *
- * Returns: (transfer full): The DBus path of the #MMObject. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMObject. The returned value
+ * should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_object_dup_path (MMObject *self)
@@ -84,9 +89,13 @@
  * mm_object_get_modem:
  * @self: A #MMModem
  *
- * Gets the #MMModem instance for the D-Bus interface org.freedesktop.ModemManager1.Modem on @self, if any.
+ * Gets the #MMModem instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem on @self, if any.
  *
- * Returns: (transfer full): A #MMModem that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModem that must be freed with g_object_unref()
+ * or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModem *
 mm_object_get_modem (MMObject *self)
@@ -104,11 +113,16 @@
  * mm_object_peek_modem: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem() but doesn't increase the reference count on the
+ * returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModem or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModem or %NULL if @self does not implement
+ * the interface. Do not free the returned object, it is owned by @self.
+ *
+ * Since: 1.0
  */
 MMModem *
 mm_object_peek_modem (MMObject *self)
@@ -128,9 +142,13 @@
  * mm_object_get_modem_3gpp:
  * @self: A #MMObject.
  *
- * Gets the #MMModem3gpp instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modem3gpp on @self, if any.
+ * Gets the #MMModem3gpp instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modem3gpp on @self, if any.
  *
- * Returns: (transfer full): A #MMModem3gpp that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModem3gpp that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModem3gpp *
 mm_object_get_modem_3gpp (MMObject *self)
@@ -144,11 +162,16 @@
  * mm_object_peek_modem_3gpp: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_3gpp() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_3gpp() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModem3gpp or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModem3gpp or %NULL if @self does not implement
+ * the interface. Do not free the returned object, it is owned by @self.
+ *
+ * Since: 1.0
  */
 MMModem3gpp *
 mm_object_peek_modem_3gpp (MMObject *self)
@@ -164,9 +187,13 @@
  * mm_object_get_modem_3gpp_ussd:
  * @self: A #MMObject.
  *
- * Gets the #MMModem3gppUssd instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modem3gpp-Ussd on @self, if any.
+ * Gets the #MMModem3gppUssd instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modem3gpp-Ussd on @self, if any.
  *
- * Returns: (transfer full): A #MMModem3gppUssd that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModem3gppUssd that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModem3gppUssd *
 mm_object_get_modem_3gpp_ussd (MMObject *self)
@@ -180,11 +207,17 @@
  * mm_object_peek_modem_3gpp_ussd: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_3gpp_ussd() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_3gpp_ussd() but doesn't increase the reference count
+ * on the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModem3gppUssd or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModem3gppUssd or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.0
  */
 MMModem3gppUssd *
 mm_object_peek_modem_3gpp_ussd (MMObject *self)
@@ -200,9 +233,13 @@
  * mm_object_get_modem_cdma:
  * @self: A #MMObject.
  *
- * Gets the #MMModemCdma instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.ModemCdma on @self, if any.
+ * Gets the #MMModemCdma instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.ModemCdma on @self, if any.
  *
- * Returns: (transfer full): A #MMModemCdma that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemCdma that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemCdma *
 mm_object_get_modem_cdma (MMObject *self)
@@ -216,11 +253,16 @@
  * mm_object_peek_modem_cdma: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_cdma() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_cdma() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemCdma or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemCdma or %NULL if @self does not implement
+ * the interface. Do not free the returned object, it is owned by @self.
+ *
+ * Since: 1.0
  */
 MMModemCdma *
 mm_object_peek_modem_cdma (MMObject *self)
@@ -236,9 +278,13 @@
  * mm_object_get_modem_simple:
  * @self: A #MMObject.
  *
- * Gets the #MMModemSimple instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modemsimple on @self, if any.
+ * Gets the #MMModemSimple instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modemsimple on @self, if any.
  *
- * Returns: (transfer full): A #MMModemSimple that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemSimple that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemSimple *
 mm_object_get_modem_simple (MMObject *self)
@@ -252,11 +298,17 @@
  * mm_object_peek_modem_simple: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_simple() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_simple() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemSimple or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemSimple or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.0
  */
 MMModemSimple *
 mm_object_peek_modem_simple (MMObject *self)
@@ -272,9 +324,13 @@
  * mm_object_get_modem_location:
  * @self: A #MMObject.
  *
- * Gets the #MMModemLocation instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modemlocation on @self, if any.
+ * Gets the #MMModemLocation instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modemlocation on @self, if any.
  *
- * Returns: (transfer full): A #MMModemLocation that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemLocation that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemLocation *
 mm_object_get_modem_location (MMObject *self)
@@ -288,11 +344,17 @@
  * mm_object_peek_modem_location: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_location() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_location() but doesn't increase the reference count
+ * on the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemLocation or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemLocation or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.0
  */
 MMModemLocation *
 mm_object_peek_modem_location (MMObject *self)
@@ -308,9 +370,13 @@
  * mm_object_get_modem_messaging:
  * @self: A #MMObject.
  *
- * Gets the #MMModemMessaging instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modemmessaging on @self, if any.
+ * Gets the #MMModemMessaging instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modemmessaging on @self, if any.
  *
- * Returns: (transfer full): A #MMModemMessaging that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemMessaging that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemMessaging *
 mm_object_get_modem_messaging (MMObject *self)
@@ -324,11 +390,17 @@
  * mm_object_peek_modem_messaging: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_messaging() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_messaging() but doesn't increase the reference count
+ * on the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemMessaging or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemMessaging or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.0
  */
 MMModemMessaging *
 mm_object_peek_modem_messaging (MMObject *self)
@@ -344,9 +416,13 @@
  * mm_object_get_modem_voice:
  * @self: A #MMObject.
  *
- * Gets the #MMModemVoice instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Modemvoice on @self, if any.
+ * Gets the #MMModemVoice instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Modemvoice on @self, if any.
  *
- * Returns: (transfer full): A #MMModemVoice that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemVoice that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.6
  */
 MMModemVoice *
 mm_object_get_modem_voice (MMObject *self)
@@ -360,11 +436,17 @@
  * mm_object_peek_modem_voice: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_voice() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_voice() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemVoice or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemVoice or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.6
  */
 MMModemVoice *
 mm_object_peek_modem_voice (MMObject *self)
@@ -380,9 +462,13 @@
  * mm_object_get_modem_time:
  * @self: A #MMObject.
  *
- * Gets the #MMModemTime instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Time on @self, if any.
+ * Gets the #MMModemTime instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Time on @self, if any.
  *
- * Returns: (transfer full): A #MMModemTime that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemTime that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemTime *
 mm_object_get_modem_time (MMObject *self)
@@ -396,11 +482,16 @@
  * mm_object_peek_modem_time: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_time() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_time() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemTime or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemTime or %NULL if @self does not implement
+ * the interface. Do not free the returned object, it is owned by @self.
+ *
+ * Since: 1.0
  */
 MMModemTime *
 mm_object_peek_modem_time (MMObject *self)
@@ -416,9 +507,13 @@
  * mm_object_get_modem_firmware:
  * @self: A #MMObject.
  *
- * Gets the #MMModemFirmware instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Firmware on @self, if any.
+ * Gets the #MMModemFirmware instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Firmware on @self, if any.
  *
- * Returns: (transfer full): A #MMModemFirmware that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemFirmware that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.0
  */
 MMModemFirmware *
 mm_object_get_modem_firmware (MMObject *self)
@@ -432,11 +527,17 @@
  * mm_object_peek_modem_firmware: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_firmware() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_firmware() but doesn't increase the reference count
+ * on the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemFirmware or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemFirmware or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.0
  */
 MMModemFirmware *
 mm_object_peek_modem_firmware (MMObject *self)
@@ -452,9 +553,13 @@
  * mm_object_get_modem_signal:
  * @self: A #MMObject.
  *
- * Gets the #MMModemSignal instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Signal on @self, if any.
+ * Gets the #MMModemSignal instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Signal on @self, if any.
  *
- * Returns: (transfer full): A #MMModemSignal that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemSignal that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.2
  */
 MMModemSignal *
 mm_object_get_modem_signal (MMObject *self)
@@ -468,11 +573,17 @@
  * mm_object_peek_modem_signal: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_signal() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_signal() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemSignal or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemSignal or %NULL if @self does not
+ * implement the interface. Do not free the returned object, it is owned by
+ * @self.
+ *
+ * Since: 1.2
  */
 MMModemSignal *
 mm_object_peek_modem_signal (MMObject *self)
@@ -488,9 +599,13 @@
  * mm_object_get_modem_oma:
  * @self: A #MMObject.
  *
- * Gets the #MMModemOma instance for the D-Bus interface org.freedesktop.ModemManager1.Modem.Oma on @self, if any.
+ * Gets the #MMModemOma instance for the D-Bus interface
+ * org.freedesktop.ModemManager1.Modem.Oma on @self, if any.
  *
- * Returns: (transfer full): A #MMModemOma that must be freed with g_object_unref() or %NULL if @self does not implement the interface.
+ * Returns: (transfer full): A #MMModemOma that must be freed with
+ * g_object_unref() or %NULL if @self does not implement the interface.
+ *
+ * Since: 1.2
  */
 MMModemOma *
 mm_object_get_modem_oma (MMObject *self)
@@ -504,11 +619,16 @@
  * mm_object_peek_modem_oma: (skip)
  * @self: A #MMObject.
  *
- * Like mm_object_get_modem_oma() but doesn't increase the reference count on the returned object.
+ * Like mm_object_get_modem_oma() but doesn't increase the reference count on
+ * the returned object.
  *
- * <warning>It is not safe to use the returned object if you are on another thread than the one where the #MMManager is running.</warning>
+ * <warning>It is not safe to use the returned object if you are on another
+ * thread than the one where the #MMManager is running.</warning>
  *
- * Returns: (transfer none): A #MMModemOma or %NULL if @self does not implement the interface. Do not free the returned object, it is owned by @self.
+ * Returns: (transfer none): A #MMModemOma or %NULL if @self does not implement
+ * the interface. Do not free the returned object, it is owned by @self.
+ *
+ * Since: 1.2
  */
 MMModemOma *
 mm_object_peek_modem_oma (MMObject *self)
diff --git a/libmm-glib/mm-pco.c b/libmm-glib/mm-pco.c
index 4804541..581761a 100644
--- a/libmm-glib/mm-pco.c
+++ b/libmm-glib/mm-pco.c
@@ -32,7 +32,7 @@
  * This object is retrieved with mm_modem_3gpp_get_pco().
  */
 
-G_DEFINE_TYPE (MMPco, mm_pco, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMPco, mm_pco, G_TYPE_OBJECT)
 
 struct _MMPcoPrivate {
     /* Session ID, signature 'u' */
@@ -77,6 +77,8 @@
  * Gets the session ID associated with the PCO.
  *
  * Returns: the session ID.
+ *
+ * Since: 1.10
  */
 guint32
 mm_pco_get_session_id (MMPco *self)
@@ -86,6 +88,9 @@
     return self->priv->session_id;
 }
 
+/**
+ * mm_pco_set_session_id: (skip)
+ */
 void
 mm_pco_set_session_id (MMPco *self,
                        guint32 session_id)
@@ -104,7 +109,10 @@
  * Gets the complete flag that indicates whether the PCO data contains the
  * complete PCO structure received from the network.
  *
- * Returns: %TRUE if the PCO data contains the complete PCO structure, %FALSE otherwise.
+ * Returns: %TRUE if the PCO data contains the complete PCO structure, %FALSE
+ * otherwise.
+ *
+ * Since: 1.10
  */
 gboolean
 mm_pco_is_complete (MMPco *self)
@@ -114,6 +122,9 @@
     return self->priv->is_complete;
 }
 
+/**
+ * mm_pco_set_complete: (skip)
+ */
 void
 mm_pco_set_complete (MMPco *self,
                      gboolean is_complete)
@@ -133,6 +144,8 @@
  * Gets the PCO data in raw bytes.
  *
  * Returns: (transfer none): the PCO data, or %NULL if it doesn't contain any.
+ *
+ * Since: 1.10
  */
 const guint8 *
 mm_pco_get_data (MMPco *self,
@@ -143,6 +156,9 @@
     return g_bytes_get_data (self->priv->data, data_size);
 }
 
+/**
+ * mm_pco_set_data: (skip)
+ */
 void
 mm_pco_set_data (MMPco *self,
                  const guint8 *data,
@@ -159,14 +175,7 @@
 /*****************************************************************************/
 
 /**
- * mm_pco_from_variant:
- * @variant: A variant with the PCO information.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #MMPco object with the values exposed in
- * the variant.
- *
- * Returns: (transfer full): A #MMPco or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * mm_pco_from_variant: (skip)
  */
 MMPco *
 mm_pco_from_variant (GVariant *variant,
@@ -204,12 +213,7 @@
 /*****************************************************************************/
 
 /**
- * mm_pco_to_variant:
- * @self: a #MMPco.
- *
- * Gets a GVariant representation with signature "(ubay)" of @self.
- *
- * Returns: (transfer full): A #GVariant representation of the #MMPco object. The returned value should be freed with g_variant_unref().
+ * mm_pco_to_variant: (skip)
  */
 GVariant *
 mm_pco_to_variant (MMPco *self)
@@ -242,11 +246,18 @@
 
 /*****************************************************************************/
 
+#ifndef MM_DISABLE_DEPRECATED
+
 /**
  * mm_pco_list_free:
- * @pco_list: (transfer full)(element-type ModemManager.Pco): a #GList of #MMPco.
+ * @pco_list: (transfer full)(element-type ModemManager.Pco): a #GList of
+ *  #MMPco.
  *
  * Frees all of the memory used by a #GList of #MMPco.
+ *
+ * Since: 1.10
+ * Deprecated: 1.12.0: Use g_list_free_full() using g_object_unref() as
+ * #GDestroyNotify function instead.
  */
 void
 mm_pco_list_free (GList *pco_list)
@@ -254,16 +265,10 @@
     g_list_free_full (pco_list, g_object_unref);
 }
 
+#endif /* MM_DISABLE_DEPRECATED */
+
 /**
- * mm_pco_list_add:
- * @pco_list: (transfer full)(element-type ModemManager.Pco): a #GList of #MMPco.
- * @pco: (transfer none): a #MMPco to add to the given list.
- *
- * Adds a #MMPco to a given PCO list. #MMPco objects stored in the order of
- * their session ID. An existing PCO with the same session ID is overwritten
- * with the new value.
- *
- * Returns: (transfer full)(element-type ModemManager.Pco): the new start of an updated or newly allocated #GList of #MMPco.
+ * mm_pco_list_add: (skip)
  */
 GList *
 mm_pco_list_add (GList *pco_list,
@@ -295,6 +300,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_pco_new: (skip)
+ */
 MMPco *
 mm_pco_new (void)
 {
diff --git a/libmm-glib/mm-pco.h b/libmm-glib/mm-pco.h
index 08f4694..7e7d4e5 100644
--- a/libmm-glib/mm-pco.h
+++ b/libmm-glib/mm-pco.h
@@ -64,9 +64,12 @@
 const guint8 *mm_pco_get_data       (MMPco *self,
                                      gsize *data_size);
 
-void          mm_pco_list_free      (GList *pco_list);
-GList        *mm_pco_list_add       (GList *pco_list,
-                                     MMPco *pco);
+#ifndef MM_DISABLE_DEPRECATED
+
+G_DEPRECATED
+void mm_pco_list_free (GList *pco_list);
+
+#endif
 
 /*****************************************************************************/
 /* ModemManager/libmm-glib/mmcli specific methods */
@@ -87,6 +90,8 @@
                                  const guint8 *data,
                                  gsize data_size);
 
+GList    *mm_pco_list_add       (GList *pco_list,
+                                 MMPco *pco);
 #endif
 
 G_END_DECLS
diff --git a/libmm-glib/mm-signal.c b/libmm-glib/mm-signal.c
index 1d34d94..64127cd 100644
--- a/libmm-glib/mm-signal.c
+++ b/libmm-glib/mm-signal.c
@@ -60,6 +60,8 @@
  * Gets the RSSI (Received Signal Strength Indication), in dBm.
  *
  * Returns: the RSSI, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_rssi (MMSignal *self)
@@ -69,6 +71,9 @@
     return self->priv->rssi;
 }
 
+/**
+ * mm_signal_set_rssi: (skip)
+ */
 void
 mm_signal_set_rssi (MMSignal *self,
                     gdouble value)
@@ -87,6 +92,8 @@
  * Gets the RSCP (Received Signal Code Power), in dBm.
  *
  * Returns: the RSCP, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_rscp (MMSignal *self)
@@ -96,6 +103,9 @@
     return self->priv->rscp;
 }
 
+/**
+ * mm_signal_set_rscp: (skip)
+ */
 void
 mm_signal_set_rscp (MMSignal *self,
                     gdouble value)
@@ -116,6 +126,8 @@
  * Only applicable to CDMA1x, CDMA EV-DO and UMTS (WCDMA).
  *
  * Returns: the ECIO, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_ecio (MMSignal *self)
@@ -125,6 +137,9 @@
     return self->priv->ecio;
 }
 
+/**
+ * mm_signal_set_ecio: (skip)
+ */
 void
 mm_signal_set_ecio (MMSignal *self,
                     gdouble value)
@@ -145,6 +160,8 @@
  * Only applicable to CDMA EV-DO.
  *
  * Returns: the SINR, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_sinr (MMSignal *self)
@@ -154,6 +171,9 @@
     return self->priv->sinr;
 }
 
+/**
+ * mm_signal_set_sinr: (skip)
+ */
 void
 mm_signal_set_sinr (MMSignal *self,
                     gdouble value)
@@ -174,6 +194,8 @@
  * Only applicable to CDMA EV-DO.
  *
  * Returns: the Io, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_io (MMSignal *self)
@@ -183,6 +205,9 @@
     return self->priv->io;
 }
 
+/**
+ * mm_signal_set_io: (skip)
+ */
 void
 mm_signal_set_io (MMSignal *self,
                     gdouble value)
@@ -203,6 +228,8 @@
  * Only applicable to LTE.
  *
  * Returns: the RSRP, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_rsrp (MMSignal *self)
@@ -212,6 +239,9 @@
     return self->priv->rsrp;
 }
 
+/**
+ * mm_signal_set_rsrp: (skip)
+ */
 void
 mm_signal_set_rsrp (MMSignal *self,
                     gdouble value)
@@ -232,6 +262,8 @@
  * Only applicable to LTE.
  *
  * Returns: the RSRQ, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_rsrq (MMSignal *self)
@@ -241,6 +273,9 @@
     return self->priv->rsrq;
 }
 
+/**
+ * mm_signal_set_rsrq: (skip)
+ */
 void
 mm_signal_set_rsrq (MMSignal *self,
                     gdouble value)
@@ -261,6 +296,8 @@
  * Only applicable to LTE.
  *
  * Returns: the S/R ratio, or %MM_SIGNAL_UNKNOWN if unknown.
+ *
+ * Since: 1.2
  */
 gdouble
 mm_signal_get_snr (MMSignal *self)
@@ -270,6 +307,9 @@
     return self->priv->snr;
 }
 
+/**
+ * mm_signal_set_snr: (skip)
+ */
 void
 mm_signal_set_snr (MMSignal *self,
                    gdouble value)
@@ -282,12 +322,7 @@
 /*****************************************************************************/
 
 /**
- * mm_signal_get_dictionary:
- * @self: A #MMSignal.
- *
- * Gets a variant dictionary with the contents of @self.
- *
- * Returns: (transfer full): A dictionary with the signal values. The returned value should be freed with g_variant_unref().
+ * mm_signal_get_dictionary: (skip)
  */
 GVariant *
 mm_signal_get_dictionary (MMSignal *self)
@@ -391,14 +426,7 @@
 }
 
 /**
- * mm_signal_new_from_dictionary:
- * @dictionary: A variant dictionary with the signal information.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #MMSignal object with the values exposed in
- * the dictionary.
- *
- * Returns: (transfer full): A #MMSignal or %NULL if @error is set. The returned value should be freed with g_object_unref().
+ * mm_signal_new_from_dictionary: (skip)
  */
 MMSignal *
 mm_signal_new_from_dictionary (GVariant *dictionary,
@@ -450,6 +478,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_signal_new: (skip)
+ */
 MMSignal *
 mm_signal_new (void)
 {
diff --git a/libmm-glib/mm-signal.h b/libmm-glib/mm-signal.h
index b672bca..73fe798 100644
--- a/libmm-glib/mm-signal.h
+++ b/libmm-glib/mm-signal.h
@@ -29,6 +29,8 @@
  * MM_SIGNAL_UNKNOWN:
  *
  * Identifier for an unknown signal value.
+ *
+ * Since: 1.2
  */
 #define MM_SIGNAL_UNKNOWN -G_MAXDOUBLE
 
diff --git a/libmm-glib/mm-sim.c b/libmm-glib/mm-sim.c
index b79a362..7246fff 100644
--- a/libmm-glib/mm-sim.c
+++ b/libmm-glib/mm-sim.c
@@ -47,6 +47,8 @@
  * Gets the DBus path of the #MMSim object.
  *
  * Returns: (transfer none): The DBus path of the #MMSim object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sim_get_path (MMSim *self)
@@ -63,7 +65,10 @@
  *
  * Gets a copy of the DBus path of the #MMSim object.
  *
- * Returns: (transfer full): The DBus path of the #MMSim object. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMSim object. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sim_dup_path (MMSim *self)
@@ -87,12 +92,14 @@
  *
  * Gets the unique SIM identifier of the #MMSim object.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sim_dup_identifier() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sim_dup_identifier() if on another thread.</warning>
  *
- * Returns: (transfer none): The unique identifier of the #MMSim object, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The unique identifier of the #MMSim object, or
+ * %NULL if it couldn't be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sim_get_identifier (MMSim *self)
@@ -109,7 +116,11 @@
  *
  * Gets a copy of the unique SIM identifier of the #MMSim object.
  *
- * Returns: (transfer full): The unique identifier of the #MMSim object, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The unique identifier of the #MMSim object, or
+ * %NULL if it couldn't be retrieved. The returned value should be freed with
+ * g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sim_dup_identifier (MMSim *self)
@@ -126,14 +137,17 @@
  * mm_sim_get_imsi:
  * @self: A #MMSim.
  *
- * Gets the International Mobile Subscriber Identity (IMSI) of the #MMSim object.
+ * Gets the International Mobile Subscriber Identity (IMSI) of the #MMSim
+ * object.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sim_dup_imsi() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sim_dup_imsi() if on another thread.</warning>
  *
- * Returns: (transfer none): The IMSI of the #MMSim object, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The IMSI of the #MMSim object, or %NULL if it
+ * couldn't be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sim_get_imsi (MMSim *self)
@@ -148,9 +162,13 @@
  * mm_sim_dup_imsi:
  * @self: A #MMSim.
  *
- * Gets a copy of the International Mobile Subscriber Identity (IMSI) of the #MMSim object.
+ * Gets a copy of the International Mobile Subscriber Identity (IMSI) of the
+ * #MMSim object.
  *
- * Returns: (transfer full): The IMSI of the #MMSim object, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The IMSI of the #MMSim object, or %NULL if it
+ * couldn't be retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sim_dup_imsi (MMSim *self)
@@ -169,12 +187,14 @@
  *
  * Gets the Operator Identifier of the #MMSim object.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sim_dup_operator_identifier() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sim_dup_operator_identifier() if on another thread.</warning>
  *
- * Returns: (transfer none): The Operator Identifier of the #MMSim object, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The Operator Identifier of the #MMSim object, or
+ * %NULL if it couldn't be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sim_get_operator_identifier (MMSim *self)
@@ -191,7 +211,11 @@
  *
  * Gets a copy of the Operator Identifier of the #MMSim object.
  *
- * Returns: (transfer full): The Operator Identifier of the #MMSim object, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The Operator Identifier of the #MMSim object, or
+ * %NULL if it couldn't be retrieved. The returned value should be freed with
+ * g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sim_dup_operator_identifier (MMSim *self)
@@ -210,12 +234,14 @@
  *
  * Gets the Operator Name of the #MMSim object.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sim_dup_operator_name() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sim_dup_operator_name() if on another thread.</warning>
  *
- * Returns: (transfer none): The Operator Name of the #MMSim object, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The Operator Name of the #MMSim object, or %NULL if
+ * it couldn't be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sim_get_operator_name (MMSim *self)
@@ -232,7 +258,10 @@
  *
  * Gets a copy of the Operator Name of the #MMSim object.
  *
- * Returns: (transfer full): The Operator Name of the #MMSim object, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The Operator Name of the #MMSim object, or %NULL if
+ * it couldn't be retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sim_dup_operator_name (MMSim *self)
@@ -251,12 +280,14 @@
  *
  * Gets the list of emergency call numbers programmed in the SIM card.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sim_dup_emergency_numbers() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sim_dup_emergency_numbers() if on another thread.</warning>
  *
- * Returns: (transfer none): The emergency numbers, or %NULL if none available. Do not free the returned value, it belongs to @self.
+ * Returns: (transfer none): The emergency numbers, or %NULL if none available.
+ * Do not free the returned value, it belongs to @self.
+ *
+ * Since: 1.12
  */
 const gchar * const *
 mm_sim_get_emergency_numbers (MMSim *self)
@@ -272,7 +303,10 @@
  *
  * Gets a copy of the list of emergency call numbers programmed in the SIM card.
  *
- * Returns: (transfer full): The emergency numbers, or %NULL if none available. The returned value should be freed with g_strfreev().
+ * Returns: (transfer full): The emergency numbers, or %NULL if none available.
+ * The returned value should be freed with g_strfreev().
+ *
+ * Since: 1.12
  */
 gchar **
 mm_sim_dup_emergency_numbers (MMSim *self)
@@ -287,12 +321,15 @@
 /**
  * mm_sim_send_pin_finish:
  * @self: A #MMSim.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sim_send_pin().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sim_send_pin().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sim_send_pin().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_send_pin_finish (MMSim *self,
@@ -309,15 +346,21 @@
  * @self: A #MMSim.
  * @pin: The PIN code.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously sends the PIN code to the SIM card.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sim_send_pin_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sim_send_pin_finish() to get the result of the operation.
  *
- * See mm_sim_send_pin_sync() for the synchronous, blocking version of this method.
+ * See mm_sim_send_pin_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_sim_send_pin (MMSim *self,
@@ -344,10 +387,12 @@
  *
  * Synchronously sends the PIN to the SIM card.
  *
- * The calling thread is blocked until a reply is received.
- * See mm_sim_send_pin() for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See
+ * mm_sim_send_pin() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_send_pin_sync (MMSim *self,
@@ -368,12 +413,15 @@
 /**
  * mm_sim_send_puk_finish:
  * @self: A #MMSim.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sim_send_puk().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sim_send_puk().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sim_send_puk().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_send_puk_finish (MMSim *self,
@@ -391,15 +439,21 @@
  * @puk: The PUK code.
  * @pin: The PIN code.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously sends the PUK code to the SIM card.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sim_send_puk_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sim_send_puk_finish() to get the result of the operation.
  *
- * See mm_sim_send_puk_sync() for the synchronous, blocking version of this method.
+ * See mm_sim_send_puk_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_sim_send_puk (MMSim *self,
@@ -433,6 +487,8 @@
  * See mm_sim_send_puk() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_send_puk_sync (MMSim *self,
@@ -455,12 +511,15 @@
 /**
  * mm_sim_enable_pin_finish:
  * @self: A #MMSim.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sim_enable_pin().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sim_enable_pin().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sim_enable_pin().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_enable_pin_finish (MMSim *self,
@@ -477,15 +536,21 @@
  * @self: A #MMSim.
  * @pin: The PIN code.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously enables requesting the PIN code in the SIM card.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sim_enable_pin_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sim_enable_pin_finish() to get the result of the operation.
  *
- * See mm_sim_enable_pin_sync() for the synchronous, blocking version of this method.
+ * See mm_sim_enable_pin_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_sim_enable_pin (MMSim *self,
@@ -517,6 +582,8 @@
  * See mm_sim_enable_pin() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_enable_pin_sync (MMSim *self,
@@ -538,12 +605,15 @@
 /**
  * mm_sim_disable_pin_finish:
  * @self: A #MMSim.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sim_disable_pin().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sim_disable_pin().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sim_disable_pin().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_disable_pin_finish (MMSim *self,
@@ -560,15 +630,21 @@
  * @self: A #MMSim.
  * @pin: The PIN code.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously disables requesting the PIN code in the SIM card.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sim_disable_pin_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sim_disable_pin_finish() to get the result of the operation.
  *
- * See mm_sim_disable_pin_sync() for the synchronous, blocking version of this method.
+ * See mm_sim_disable_pin_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_sim_disable_pin (MMSim *self,
@@ -600,6 +676,8 @@
  * See mm_sim_disable_pin() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_disable_pin_sync (MMSim *self,
@@ -621,12 +699,15 @@
 /**
  * mm_sim_change_pin_finish:
  * @self: A #MMSim.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sim_change_pin().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sim_change_pin().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sim_change_pin().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_change_pin_finish (MMSim *self,
@@ -644,15 +725,21 @@
  * @old_pin: The current PIN code.
  * @new_pin: The new PIN code to be set.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously changes the PIN code in the SIM card.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sim_change_pin_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sim_change_pin_finish() to get the result of the operation.
  *
- * See mm_sim_change_pin_sync() for the synchronous, blocking version of this method.
+ * See mm_sim_change_pin_sync() for the synchronous, blocking version of this
+ * method.
+ *
+ * Since: 1.0
  */
 void
 mm_sim_change_pin (MMSim *self,
@@ -686,6 +773,8 @@
  * See mm_sim_change_pin() for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sim_change_pin_sync (MMSim *self,
diff --git a/libmm-glib/mm-simple-connect-properties.c b/libmm-glib/mm-simple-connect-properties.c
index a02ba0e..f8649b5 100644
--- a/libmm-glib/mm-simple-connect-properties.c
+++ b/libmm-glib/mm-simple-connect-properties.c
@@ -31,10 +31,10 @@
  * mm_modem_simple_connect() or mm_modem_simple_connect_sync().
  */
 
-G_DEFINE_TYPE (MMSimpleConnectProperties, mm_simple_connect_properties, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMSimpleConnectProperties, mm_simple_connect_properties, G_TYPE_OBJECT)
 
-#define PROPERTY_PIN             "pin"
-#define PROPERTY_OPERATOR_ID     "operator-id"
+#define PROPERTY_PIN         "pin"
+#define PROPERTY_OPERATOR_ID "operator-id"
 
 struct _MMSimpleConnectPropertiesPrivate {
     /* PIN */
@@ -53,6 +53,8 @@
  * @pin: PIN code.
  *
  * Sets the PIN code to use when unlocking the modem.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_pin (MMSimpleConnectProperties *self,
@@ -70,7 +72,10 @@
  *
  * Gets the PIN code to use when unlocking the modem.
  *
- * Returns: (transfer none): the PIN, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the PIN, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_connect_properties_get_pin (MMSimpleConnectProperties *self)
@@ -88,6 +93,8 @@
  * @operator_id: operator ID, given as MCC/MNC.
  *
  * Sets the ID of the network to which register before connecting.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_operator_id (MMSimpleConnectProperties *self,
@@ -105,7 +112,10 @@
  *
  * Gets the ID of the network to which register before connecting.
  *
- * Returns: (transfer none): the operator ID, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the operator ID, or #NULL if not set. Do not free
+ * the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_connect_properties_get_operator_id (MMSimpleConnectProperties *self)
@@ -123,6 +133,8 @@
  * @apn: Name of the access point.
  *
  * Sets the name of the access point to use when connecting.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_apn (MMSimpleConnectProperties *self,
@@ -140,7 +152,10 @@
  *
  * Gets the name of the access point to use when connecting.
  *
- * Returns: (transfer none): the access point, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the access point, or #NULL if not set. Do not free
+ * the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_connect_properties_get_apn (MMSimpleConnectProperties *self)
@@ -155,9 +170,12 @@
 /**
  * mm_simple_connect_properties_set_allowed_auth:
  * @self: a #MMSimpleConnectProperties.
- * @allowed_auth: a bitmask of #MMBearerAllowedAuth values. %MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.
+ * @allowed_auth: a bitmask of #MMBearerAllowedAuth values.
+ *  %MM_BEARER_ALLOWED_AUTH_UNKNOWN may be given to request the modem-default method.
  *
  * Sets the authentication method to use.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_allowed_auth (MMSimpleConnectProperties *self,
@@ -174,7 +192,10 @@
  *
  * Gets the authentication methods allowed in the connection.
  *
- * Returns: a bitmask of #MMBearerAllowedAuth values, or %MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.
+ * Returns: a bitmask of #MMBearerAllowedAuth values, or
+ * %MM_BEARER_ALLOWED_AUTH_UNKNOWN to request the modem-default method.
+ *
+ * Since: 1.0
  */
 MMBearerAllowedAuth
 mm_simple_connect_properties_get_allowed_auth (MMSimpleConnectProperties *self)
@@ -192,6 +213,8 @@
  * @user: the username
  *
  * Sets the username used to authenticate with the access point.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_user (MMSimpleConnectProperties *self,
@@ -209,7 +232,10 @@
  *
  * Gets the username used to authenticate with the access point.
  *
- * Returns: (transfer none): the username, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the username, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_connect_properties_get_user (MMSimpleConnectProperties *self)
@@ -227,6 +253,8 @@
  * @password: the password
  *
  * Sets the password used to authenticate with the access point.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_password (MMSimpleConnectProperties *self,
@@ -244,7 +272,10 @@
  *
  * Gets the password used to authenticate with the access point.
  *
- * Returns: (transfer none): the password, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the password, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_connect_properties_get_password (MMSimpleConnectProperties *self)
@@ -262,6 +293,8 @@
  * @ip_type: a #MMBearerIpFamily.
  *
  * Sets the IP type to use.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_ip_type (MMSimpleConnectProperties *self,
@@ -280,6 +313,8 @@
  * Sets the IP type to use.
  *
  * Returns: a #MMBearerIpFamily.
+ *
+ * Since: 1.0
  */
 MMBearerIpFamily
 mm_simple_connect_properties_get_ip_type (MMSimpleConnectProperties *self)
@@ -298,6 +333,8 @@
  *
  * Sets the flag to indicate whether roaming is allowed or not in the
  * connection.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_connect_properties_set_allow_roaming (MMSimpleConnectProperties *self,
@@ -315,7 +352,9 @@
  *
  * Checks whether roaming is allowed in the connection.
  *
- * Returns: %TRUE if roaming is allowed, %FALSE otherwise..
+ * Returns: %TRUE if roaming is allowed, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_simple_connect_properties_get_allow_roaming (MMSimpleConnectProperties *self)
@@ -337,6 +376,7 @@
  *
  * Sets the number to use when performing the connection.
  *
+ * Since: 1.0
  * Deprecated: 1.10.0. The number setting is not used anywhere, and therefore
  * it doesn't make sense to expose it in the ModemManager interface.
  */
@@ -355,8 +395,10 @@
  *
  * Gets the number to use when performing the connection.
  *
- * Returns: (transfer none): the number, or #NULL if not set. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): the number, or #NULL if not set. Do not free the
+ * returned value, it is owned by @self.
  *
+ * Since: 1.0
  * Deprecated: 1.10.0. The number setting is not used anywhere, and therefore
  * it doesn't make sense to expose it in the ModemManager interface.
  */
@@ -374,12 +416,7 @@
 /*****************************************************************************/
 
 /**
- * mm_simple_connect_properties_get_bearer_properties:
- * @self: a #MMSimpleConnectProperties:
- *
- * Returns the bearer properties of @self.
- *
- * Returns: (transfer full): a #MMBearerProperties
+ * mm_simple_connect_properties_get_bearer_properties: (skip)
  */
 MMBearerProperties *
 mm_simple_connect_properties_get_bearer_properties (MMSimpleConnectProperties *self)
@@ -391,6 +428,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_simple_connect_properties_get_dictionary: (skip)
+ */
 GVariant *
 mm_simple_connect_properties_get_dictionary (MMSimpleConnectProperties *self)
 {
@@ -470,6 +510,9 @@
     return !ctx->error;
 }
 
+/**
+ * mm_simple_connect_properties_new_from_string: (skip)
+ */
 MMSimpleConnectProperties *
 mm_simple_connect_properties_new_from_string (const gchar *str,
                                               GError **error)
@@ -496,6 +539,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_simple_connect_properties_new_from_dictionary: (skip)
+ */
 MMSimpleConnectProperties *
 mm_simple_connect_properties_new_from_dictionary (GVariant *dictionary,
                                                   GError **error)
@@ -567,6 +613,8 @@
  * Creates a new empty #MMSimpleConnectProperties.
  *
  * Returns: (transfer full): a #MMSimpleConnectProperties. The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSimpleConnectProperties *
 mm_simple_connect_properties_new (void)
diff --git a/libmm-glib/mm-simple-status.c b/libmm-glib/mm-simple-status.c
index 9be9573..a296fd6 100644
--- a/libmm-glib/mm-simple-status.c
+++ b/libmm-glib/mm-simple-status.c
@@ -33,7 +33,7 @@
  * mm_modem_simple_get_status_sync().
  */
 
-G_DEFINE_TYPE (MMSimpleStatus, mm_simple_status, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMSimpleStatus, mm_simple_status, G_TYPE_OBJECT)
 
 enum {
     PROP_0,
@@ -73,8 +73,6 @@
     gchar *modem_3gpp_operator_code;
     /* 3GPP operator name, given only when registered, signature 's' */
     gchar *modem_3gpp_operator_name;
-    /* 3GPP subsctiption state, signature 'u' */
-    MMModem3gppSubscriptionState modem_3gpp_subscription_state;
 
     /* <--- From the Modem CDMA interface ---> */
     /* CDMA/CDMA1x registration state, signature 'u' */
@@ -96,6 +94,8 @@
  * Gets the state of the modem.
  *
  * Returns: a #MMModemState.
+ *
+ * Since: 1.0
  */
 MMModemState
 mm_simple_status_get_state (MMSimpleStatus *self)
@@ -110,11 +110,14 @@
 /**
  * mm_simple_status_get_signal_quality:
  * @self: a #MMSimpleStatus.
- * @recent: (out) (allow-none): indication of whether the given signal quality is considered recent.
+ * @recent: (out) (allow-none): indication of whether the given signal quality
+ *  is considered recent.
  *
  * Gets the signal quality.
  *
  * Returns: the signal quality.
+ *
+ * Since: 1.0
  */
 guint32
 mm_simple_status_get_signal_quality (MMSimpleStatus *self,
@@ -142,10 +145,13 @@
 /**
  * mm_simple_status_get_current_bands:
  * @self: a #MMSimpleStatus.
- * @bands: (out): location for an array of #MMModemBand values. Do not free the returned value, it is owned by @self.
+ * @bands: (out): location for an array of #MMModemBand values. Do not free the
+ *  returned value, it is owned by @self.
  * @n_bands: (out): number of elements in @bands.
  *
  * Gets the currently used frequency bands.
+ *
+ * Since: 1.0
  */
 void
 mm_simple_status_get_current_bands (MMSimpleStatus *self,
@@ -170,6 +176,8 @@
  * Gets the currently used access technologies.
  *
  * Returns: a bitmask of #MMModemAccessTechnology values.
+ *
+ * Since: 1.0
  */
 MMModemAccessTechnology
 mm_simple_status_get_access_technologies (MMSimpleStatus *self)
@@ -188,6 +196,8 @@
  * Gets the current state of the registration in the 3GPP network.
  *
  * Returns: a #MMModem3gppRegistrationState.
+ *
+ * Since: 1.0
  */
 MMModem3gppRegistrationState
 mm_simple_status_get_3gpp_registration_state (MMSimpleStatus *self)
@@ -203,9 +213,13 @@
  * mm_simple_status_get_3gpp_operator_code:
  * @self: a #MMSimpleStatus.
  *
- * Gets the MCC/MNC of the operator of the 3GPP network where the modem is registered.
+ * Gets the MCC/MNC of the operator of the 3GPP network where the modem is
+ * registered.
  *
- * Returns: the operator code, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: the operator code, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_status_get_3gpp_operator_code (MMSimpleStatus *self)
@@ -221,9 +235,13 @@
  * mm_simple_status_get_3gpp_operator_name:
  * @self: a #MMSimpleStatus.
  *
- * Gets the name of the operator of the 3GPP network where the modem is registered.
+ * Gets the name of the operator of the 3GPP network where the modem is
+ * registered.
  *
- * Returns: the operator name, or %NULL if unknown. Do not free the returned value, it is owned by @self.
+ * Returns: the operator name, or %NULL if unknown. Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_simple_status_get_3gpp_operator_name (MMSimpleStatus *self)
@@ -235,6 +253,8 @@
 
 /*****************************************************************************/
 
+#ifndef MM_DISABLE_DEPRECATED
+
 /**
  * mm_simple_status_get_3gpp_subscription_state:
  * @self: a #MMSimpleStatus.
@@ -242,15 +262,19 @@
  * Gets the current subscription status of the account.
  *
  * Returns: a #MMModem3gppSubscriptionState.
+ *
+ * Since: 1.0
+ * Deprecated: 1.12.0. The value of this property can only be obtained with
+ * operator specific logic (e.g. processing specific PCO info), and therefore
+ * it doesn't make sense to expose it in the ModemManager interface.
  */
 MMModem3gppSubscriptionState
 mm_simple_status_get_3gpp_subscription_state (MMSimpleStatus *self)
 {
-    g_return_val_if_fail (MM_IS_SIMPLE_STATUS (self), MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN);
-
-    return self->priv->modem_3gpp_subscription_state;
+    return MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN;
 }
 
+#endif /* MM_DISABLE_DEPRECATED */
 
 /*****************************************************************************/
 
@@ -261,6 +285,8 @@
  * Gets the current state of the registration in the CDMA-1x network.
  *
  * Returns: a #MMModemCdmaRegistrationState.
+ *
+ * Since: 1.0
  */
 MMModemCdmaRegistrationState
 mm_simple_status_get_cdma_cdma1x_registration_state (MMSimpleStatus *self)
@@ -279,6 +305,8 @@
  * Gets the current state of the registration in the EV-DO network.
  *
  * Returns: a #MMModemCdmaRegistrationState.
+ *
+ * Since: 1.0
  */
 MMModemCdmaRegistrationState
 mm_simple_status_get_cdma_evdo_registration_state (MMSimpleStatus *self)
@@ -297,6 +325,8 @@
  * Gets the System Identification number of the CDMA network.
  *
  * Returns: the SID, or %MM_MODEM_CDMA_SID_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_simple_status_get_cdma_sid (MMSimpleStatus *self)
@@ -315,6 +345,8 @@
  * Gets the Network Identification number of the CDMA network.
  *
  * Returns: the NID, or %MM_MODEM_CDMA_NID_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_simple_status_get_cdma_nid (MMSimpleStatus *self)
@@ -326,6 +358,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_simple_status_get_dictionary: (skip)
+ */
 GVariant *
 mm_simple_status_get_dictionary (MMSimpleStatus *self)
 {
@@ -397,17 +432,14 @@
 
     }
 
-    if (self->priv->modem_3gpp_subscription_state)
-        g_variant_builder_add (&builder,
-                               "{sv}",
-                               MM_SIMPLE_PROPERTY_3GPP_SUBSCRIPTION_STATE,
-                               g_variant_new_uint32 (self->priv->modem_3gpp_subscription_state));
-
     return g_variant_ref_sink (g_variant_builder_end (&builder));
 }
 
 /*****************************************************************************/
 
+/**
+ * mm_simple_status_new_from_dictionary: (skip)
+ */
 MMSimpleStatus *
 mm_simple_status_new_from_dictionary (GVariant *dictionary,
                                       GError **error)
@@ -442,7 +474,6 @@
         if (g_str_equal (key, MM_SIMPLE_PROPERTY_STATE) ||
             g_str_equal (key, MM_SIMPLE_PROPERTY_ACCESS_TECHNOLOGIES) ||
             g_str_equal (key, MM_SIMPLE_PROPERTY_3GPP_REGISTRATION_STATE) ||
-            g_str_equal (key, MM_SIMPLE_PROPERTY_3GPP_SUBSCRIPTION_STATE) ||
             g_str_equal (key, MM_SIMPLE_PROPERTY_CDMA_CDMA1X_REGISTRATION_STATE) ||
             g_str_equal (key, MM_SIMPLE_PROPERTY_CDMA_EVDO_REGISTRATION_STATE) ||
             g_str_equal (key, MM_SIMPLE_PROPERTY_CDMA_SID) ||
@@ -487,6 +518,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_simple_status_new: (skip)
+ */
 MMSimpleStatus *
 mm_simple_status_new (void)
 {
@@ -535,7 +569,7 @@
         self->priv->modem_3gpp_operator_name = g_value_dup_string (value);
         break;
     case PROP_3GPP_SUBSCRIPTION_STATE:
-        self->priv->modem_3gpp_subscription_state = g_value_get_enum (value);
+        /* no-op */
         break;
     case PROP_CDMA_CDMA1X_REGISTRATION_STATE:
         self->priv->modem_cdma_cdma1x_registration_state = g_value_get_enum (value);
@@ -586,7 +620,7 @@
         g_value_set_string (value, self->priv->modem_3gpp_operator_name);
         break;
     case PROP_3GPP_SUBSCRIPTION_STATE:
-        g_value_set_enum (value, self->priv->modem_3gpp_subscription_state);
+        g_value_set_enum (value, MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN);
         break;
     case PROP_CDMA_CDMA1X_REGISTRATION_STATE:
         g_value_set_enum (value, self->priv->modem_cdma_cdma1x_registration_state);
@@ -617,7 +651,6 @@
     self->priv->state = MM_MODEM_STATE_UNKNOWN;
     self->priv->access_technologies = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
     self->priv->modem_3gpp_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
-    self->priv->modem_3gpp_subscription_state = MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN;
     self->priv->current_bands = g_variant_ref_sink (mm_common_build_bands_unknown ());
     self->priv->signal_quality = g_variant_ref_sink (g_variant_new ("(ub)", 0, 0));
     self->priv->modem_cdma_cdma1x_registration_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN;
@@ -717,7 +750,7 @@
     properties[PROP_3GPP_SUBSCRIPTION_STATE] =
         g_param_spec_enum (MM_SIMPLE_PROPERTY_3GPP_SUBSCRIPTION_STATE,
                            "3GPP subscription state",
-                           "Subscription state of the account",
+                           "Subscription state of the account (deprecated)",
                            MM_TYPE_MODEM_3GPP_SUBSCRIPTION_STATE,
                            MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN,
                            G_PARAM_READWRITE);
diff --git a/libmm-glib/mm-simple-status.h b/libmm-glib/mm-simple-status.h
index 930e1f1..ae1f5f6 100644
--- a/libmm-glib/mm-simple-status.h
+++ b/libmm-glib/mm-simple-status.h
@@ -70,7 +70,10 @@
 MMModem3gppRegistrationState  mm_simple_status_get_3gpp_registration_state (MMSimpleStatus *self);
 const gchar                  *mm_simple_status_get_3gpp_operator_code      (MMSimpleStatus *self);
 const gchar                  *mm_simple_status_get_3gpp_operator_name      (MMSimpleStatus *self);
+
+#ifndef MM_DISABLE_DEPRECATED
 MMModem3gppSubscriptionState  mm_simple_status_get_3gpp_subscription_state (MMSimpleStatus *self);
+#endif
 
 MMModemCdmaRegistrationState mm_simple_status_get_cdma_cdma1x_registration_state (MMSimpleStatus *self);
 MMModemCdmaRegistrationState mm_simple_status_get_cdma_evdo_registration_state   (MMSimpleStatus *self);
diff --git a/libmm-glib/mm-sms-properties.c b/libmm-glib/mm-sms-properties.c
index b0ff5a3..30d5b71 100644
--- a/libmm-glib/mm-sms-properties.c
+++ b/libmm-glib/mm-sms-properties.c
@@ -68,6 +68,8 @@
  * @text: The text to set, in UTF-8.
  *
  * Sets the message text.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_text (MMSmsProperties *self,
@@ -85,7 +87,11 @@
  *
  * Gets the message text, in UTF-8.
  *
- * Returns: (transfer none): The message text, or %NULL if it doesn't contain any (e.g. contains data instead). Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The message text, or %NULL if it doesn't contain
+ * any (e.g. contains data instead). Do not free the returned value, it is
+ * owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_properties_get_text (MMSmsProperties *self)
@@ -104,6 +110,8 @@
  * @data_length: Length of @data.
  *
  * Sets the message data.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_data (MMSmsProperties *self,
@@ -126,9 +134,12 @@
 /**
  * mm_sms_properties_set_data_bytearray:
  * @self: A #MMSmsProperties.
- * @data: A #GByteArray with the data to set. This method takes a new reference of @data.
+ * @data: A #GByteArray with the data to set. This method takes a new reference
+ *  of @data.
  *
  * Sets the message data.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_data_bytearray (MMSmsProperties *self,
@@ -149,7 +160,10 @@
  *
  * Gets the message data.
  *
- * Returns: (transfer none): The message data, or %NULL if it doesn't contain any (e.g. contains text instead).
+ * Returns: (transfer none): The message data, or %NULL if it doesn't contain
+ * any (e.g. contains text instead).
+ *
+ * Since: 1.0
  */
 const guint8 *
 mm_sms_properties_get_data (MMSmsProperties *self,
@@ -169,7 +183,11 @@
  *
  * Gets the message data.
  *
- * Returns: (transfer none): A #GByteArray with the message data, or %NULL if it doesn't contain any (e.g. contains text instead). Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): A #GByteArray with the message data, or %NULL if it
+ * doesn't contain any (e.g. contains text instead). Do not free the returned
+ * value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 GByteArray *
 mm_sms_properties_peek_data_bytearray (MMSmsProperties *self)
@@ -185,7 +203,11 @@
  *
  * Gets the message data.
  *
- * Returns: (transfer full): A #GByteArray with the message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_byte_array_unref().
+ * Returns: (transfer full): A #GByteArray with the message data, or %NULL if it
+ * doesn't contain any (e.g. contains text instead). The returned value should
+ * be freed with g_byte_array_unref().
+ *
+ * Since: 1.0
  */
 GByteArray *
 mm_sms_properties_get_data_bytearray (MMSmsProperties *self)
@@ -203,6 +225,8 @@
  * @number: The number.
  *
  * Sets the number to which the message is addressed.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_number (MMSmsProperties *self,
@@ -220,7 +244,10 @@
  *
  * Gets the number to which the message is addressed.
  *
- * Returns: (transfer none): The number, or %NULL if it couldn't be retrieved. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The number, or %NULL if it couldn't be retrieved.
+ * Do not free the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_properties_get_number (MMSmsProperties *self)
@@ -238,6 +265,8 @@
  * @smsc: The SMSC number.
  *
  * Sets the SMS service center number.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_smsc (MMSmsProperties *self,
@@ -255,7 +284,10 @@
  *
  * Gets the SMS service center number.
  *
- * Returns: (transfer none): The number of the SMSC, or %NULL if it couldn't be retrieved. Do not free the returned value, it is owned by @self.
+ * Returns: (transfer none): The number of the SMSC, or %NULL if it couldn't be
+ * retrieved. Do not free the returned value, it is owned by @self.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_properties_get_smsc (MMSmsProperties *self)
@@ -273,6 +305,8 @@
  * @validity: The validity of %MM_SMS_VALIDITY_TYPE_RELATIVE type.
  *
  * Sets the relative validity time of the SMS.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_validity_relative (MMSmsProperties *self,
@@ -291,6 +325,8 @@
  * Gets the relative validity type the SMS.
  *
  * Returns: a #MMSmsValidityType.
+ *
+ * Since: 1.0
  */
 MMSmsValidityType
 mm_sms_properties_get_validity_type (MMSmsProperties *self)
@@ -307,6 +343,8 @@
  * Gets the relative validity time of the SMS.
  *
  * Returns: the validity time or 0 if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_sms_properties_get_validity_relative (MMSmsProperties *self)
@@ -325,6 +363,8 @@
  * @message_class: The message class (0..3), or -1 for invalid/unset class.
  *
  * Sets the 3GPP message class of the SMS.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_class (MMSmsProperties *self,
@@ -343,6 +383,8 @@
  * Gets the 3GPP message class of the SMS.
  *
  * Returns: the message class, or -1 for invalid/unset class.
+ *
+ * Since: 1.0
  */
 gint
 mm_sms_properties_get_class (MMSmsProperties *self)
@@ -360,6 +402,8 @@
  * @request: %TRUE if delivery report is requested, %FALSE otherwise.
  *
  * Sets whether delivery report is requested for the SMS.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_properties_set_delivery_report_request (MMSmsProperties *self,
@@ -378,6 +422,8 @@
  * Checks whether delivery report is requested for the SMS.
  *
  * Returns: %TRUE if delivery report is requested, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_properties_get_delivery_report_request (MMSmsProperties *self)
@@ -395,6 +441,8 @@
  * @teleservice_id: The CDMA teleservice ID.
  *
  * Sets the CDMA teleservice ID of the SMS.
+ *
+ * Since: 1.2
  */
 void
 mm_sms_properties_set_teleservice_id (MMSmsProperties *self,
@@ -412,6 +460,8 @@
  * Gets the CDMA teleservice ID of the SMS.
  *
  * Returns: the CDMA teleservice ID.
+ *
+ * Since: 1.2
  */
 MMSmsCdmaTeleserviceId
 mm_sms_properties_get_teleservice_id (MMSmsProperties *self)
@@ -429,6 +479,8 @@
  * @service_category: The CDMA service category.
  *
  * Sets the CDMA service category of the SMS.
+ *
+ * Since: 1.2
  */
 void
 mm_sms_properties_set_service_category (MMSmsProperties *self,
@@ -446,6 +498,8 @@
  * Gets the CDMA message service category of the SMS.
  *
  * Returns: the CDMA service category.
+ *
+ * Since: 1.2
  */
 MMSmsCdmaServiceCategory
 mm_sms_properties_get_service_category (MMSmsProperties *self)
@@ -457,6 +511,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_sms_properties_get_dictionary: (skip)
+ */
 GVariant *
 mm_sms_properties_get_dictionary (MMSmsProperties *self)
 {
@@ -680,6 +737,9 @@
                            &ctx->error);
 }
 
+/**
+ * mm_sms_properties_new_from_string: (skip)
+ */
 MMSmsProperties *
 mm_sms_properties_new_from_string (const gchar *str,
                                    GError **error)
@@ -775,6 +835,9 @@
     return TRUE;
 }
 
+/**
+ * mm_sms_properties_new_from_dictionary: (skip)
+ */
 MMSmsProperties *
 mm_sms_properties_new_from_dictionary (GVariant *dictionary,
                                        GError **error)
@@ -823,38 +886,13 @@
 /*****************************************************************************/
 
 /**
- * mm_sms_properties_dup:
- * @orig: a #MMSmsProperties
- *
- * Returns a copy of @orig.
- *
- * Returns: (transfer full): a #MMSmsProperties
- */
-MMSmsProperties *
-mm_sms_properties_dup (MMSmsProperties *orig)
-{
-    GVariant *dict;
-    MMSmsProperties *copy;
-    GError *error = NULL;
-
-    g_return_val_if_fail (MM_IS_SMS_PROPERTIES (orig), NULL);
-
-    dict = mm_sms_properties_get_dictionary (orig);
-    copy = mm_sms_properties_new_from_dictionary (dict, &error);
-    g_assert_no_error (error);
-    g_variant_unref (dict);
-
-    return copy;
-}
-
-/*****************************************************************************/
-
-/**
  * mm_sms_properties_new:
  *
  * Creates a new empty #MMSmsProperties.
  *
  * Returns: (transfer full): a #MMSmsProperties. The returned value should be freed with g_object_unref().
+ *
+ * Since: 1.0
  */
 MMSmsProperties *
 mm_sms_properties_new (void)
diff --git a/libmm-glib/mm-sms-properties.h b/libmm-glib/mm-sms-properties.h
index f5864ee..0def66e 100644
--- a/libmm-glib/mm-sms-properties.h
+++ b/libmm-glib/mm-sms-properties.h
@@ -109,8 +109,6 @@
 MMSmsProperties *mm_sms_properties_new_from_dictionary (GVariant *dictionary,
                                                         GError **error);
 
-MMSmsProperties *mm_sms_properties_dup (MMSmsProperties *orig);
-
 GVariant *mm_sms_properties_get_dictionary (MMSmsProperties *self);
 
 #endif
diff --git a/libmm-glib/mm-sms.c b/libmm-glib/mm-sms.c
index d7d1b41..2caf01f 100644
--- a/libmm-glib/mm-sms.c
+++ b/libmm-glib/mm-sms.c
@@ -49,6 +49,8 @@
  * Gets the DBus path of the #MMSms object.
  *
  * Returns: (transfer none): The DBus path of the #MMSms object.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_path (MMSms *self)
@@ -65,7 +67,10 @@
  *
  * Gets a copy of the DBus path of the #MMSms object.
  *
- * Returns: (transfer full): The DBus path of the #MMSms object. The returned value should be freed with g_free().
+ * Returns: (transfer full): The DBus path of the #MMSms object. The returned
+ * value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_path (MMSms *self)
@@ -89,12 +94,14 @@
  *
  * Gets the message text, in UTF-8.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sms_dup_text() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sms_dup_text() if on another thread.</warning>
  *
- * Returns: (transfer none): The message text, or %NULL if it doesn't contain any (e.g. contains data instead).
+ * Returns: (transfer none): The message text, or %NULL if it doesn't contain
+ * any (e.g. contains data instead).
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_text (MMSms *self)
@@ -111,7 +118,11 @@
  *
  * Gets the message text, in UTF-8.
  *
- * Returns: (transfer full): The message text, or %NULL if it doesn't contain any (e.g. contains data instead). The returned value should be freed with g_free().
+ * Returns: (transfer full): The message text, or %NULL if it doesn't contain
+ * any (e.g. contains data instead). The returned value should be freed with
+ * g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_text (MMSms *self)
@@ -131,7 +142,11 @@
  *
  * Gets the message data.
  *
- * Returns: (transfer none) (array length=data_len) (element-type guint8): The message data, or %NULL if it doesn't contain any (e.g. contains text instead).
+ * Returns: (transfer none) (array length=data_len) (element-type guint8): The
+ * message data, or %NULL if it doesn't contain any (e.g. contains text
+ * instead).
+ *
+ * Since: 1.0
  */
 const guint8 *
 mm_sms_get_data (MMSms *self,
@@ -158,7 +173,11 @@
  *
  * Gets the message data.
  *
- * Returns: (transfer full) (array length=data_len) (element-type guint8): The message data, or %NULL if it doesn't contain any (e.g. contains text instead). The returned value should be freed with g_free().
+ * Returns: (transfer full) (array length=data_len) (element-type guint8): The
+ * message data, or %NULL if it doesn't contain any (e.g. contains text
+ * instead). The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 guint8 *
 mm_sms_dup_data (MMSms *self,
@@ -198,12 +217,13 @@
  *
  * Gets the number to which the message is addressed.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sms_dup_number() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sms_dup_number() if on another thread.</warning>
  *
  * Returns: (transfer none): The number, or %NULL if it couldn't be retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_number (MMSms *self)
@@ -220,7 +240,10 @@
  *
  * Gets the number to which the message is addressed.
  *
- * Returns: (transfer full): The number, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The number, or %NULL if it couldn't be retrieved.
+ * The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_number (MMSms *self)
@@ -239,12 +262,14 @@
  *
  * Gets the SMS service center number.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sms_dup_smsc() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sms_dup_smsc() if on another thread.</warning>
  *
- * Returns: (transfer none): The number of the SMSC, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The number of the SMSC, or %NULL if it couldn't be
+ * retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_smsc (MMSms *self)
@@ -261,7 +286,10 @@
  *
  * Gets the SMS service center number.
  *
- * Returns: (transfer full): The number of the SMSC, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The number of the SMSC, or %NULL if it couldn't be
+ * retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_smsc (MMSms *self)
@@ -285,12 +313,14 @@
  * This field is only applicable if the PDU type is %MM_SMS_PDU_TYPE_DELIVER or
  * %MM_SMS_PDU_TYPE_STATUS_REPORT.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sms_dup_timestamp() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sms_dup_timestamp() if on another thread.</warning>
  *
- * Returns: (transfer none): The timestamp, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The timestamp, or %NULL if it couldn't be
+ * retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_timestamp (MMSms *self)
@@ -312,7 +342,10 @@
  * This field is only applicable if the PDU type is %MM_SMS_PDU_TYPE_DELIVER or
  * %MM_SMS_PDU_TYPE_STATUS_REPORT.
  *
- * Returns: (transfer full): The timestamp, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The timestamp, or %NULL if it couldn't be
+ * retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_timestamp (MMSms *self)
@@ -333,14 +366,17 @@
  * <ulink url="http://en.wikipedia.org/wiki/ISO_8601">ISO8601</ulink>
  * format.
  *
- * This field is only applicable if the PDU type is %MM_SMS_PDU_TYPE_STATUS_REPORT.
+ * This field is only applicable if the PDU type is
+ * %MM_SMS_PDU_TYPE_STATUS_REPORT.
  *
- * <warning>The returned value is only valid until the property changes so
- * it is only safe to use this function on the thread where
- * @self was constructed. Use mm_sms_dup_discharge_timestamp() if on another
- * thread.</warning>
+ * <warning>The returned value is only valid until the property changes so it is
+ * only safe to use this function on the thread where @self was constructed. Use
+ * mm_sms_dup_discharge_timestamp() if on another thread.</warning>
  *
- * Returns: (transfer none): The timestamp, or %NULL if it couldn't be retrieved.
+ * Returns: (transfer none): The timestamp, or %NULL if it couldn't be
+ * retrieved.
+ *
+ * Since: 1.0
  */
 const gchar *
 mm_sms_get_discharge_timestamp (MMSms *self)
@@ -359,9 +395,13 @@
  * <ulink url="http://en.wikipedia.org/wiki/ISO_8601">ISO8601</ulink>
  * format.
  *
- * This field is only applicable if the PDU type is %MM_SMS_PDU_TYPE_STATUS_REPORT.
+ * This field is only applicable if the PDU type is
+ * %MM_SMS_PDU_TYPE_STATUS_REPORT.
  *
- * Returns: (transfer full): The timestamp, or %NULL if it couldn't be retrieved. The returned value should be freed with g_free().
+ * Returns: (transfer full): The timestamp, or %NULL if it couldn't be
+ * retrieved. The returned value should be freed with g_free().
+ *
+ * Since: 1.0
  */
 gchar *
 mm_sms_dup_discharge_timestamp (MMSms *self)
@@ -381,6 +421,8 @@
  * Gets the type of validity information in the SMS.
  *
  * Returns: the validity type or #MM_SMS_VALIDITY_TYPE_UNKNOWN.
+ *
+ * Since: 1.0
  */
 MMSmsValidityType
 mm_sms_get_validity_type (MMSms *self)
@@ -411,6 +453,8 @@
  * Only applicable if the type of validity is #MM_SMS_VALIDITY_TYPE_RELATIVE.
  *
  * Returns: the length of the validity period, or 0 if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_sms_get_validity_relative (MMSms *self)
@@ -446,6 +490,8 @@
  * Gets the 3GPP message class of the SMS.
  *
  * Returns: the message class, or -1 for invalid/unset class.
+ *
+ * Since: 1.0
  */
 gint
 mm_sms_get_class (MMSms *self)
@@ -467,6 +513,8 @@
  * message reference of the PDU associated to the status report.
  *
  * Returns: The message reference.
+ *
+ * Since: 1.0
  */
 guint
 mm_sms_get_message_reference (MMSms *self)
@@ -485,6 +533,8 @@
  * Checks whether delivery report is requested for this SMS.
  *
  * Returns: %TRUE if delivery report is requested, %FALSE otherwise.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_get_delivery_report_request (MMSms *self)
@@ -502,9 +552,12 @@
  *
  * Gets the delivery state of this SMS.
  *
- * This field is only applicable if the PDU type is %MM_SMS_PDU_TYPE_STATUS_REPORT.
+ * This field is only applicable if the PDU type is
+ * %MM_SMS_PDU_TYPE_STATUS_REPORT.
  *
  * Returns: A #MMSmsDeliveryState specifying the delivery state.
+ *
+ * Since: 1.0
  */
 guint
 mm_sms_get_delivery_state (MMSms *self)
@@ -523,6 +576,8 @@
  * Gets the state of this SMS.
  *
  * Returns: A #MMSmsState specifying the state.
+ *
+ * Since: 1.0
  */
 MMSmsState
 mm_sms_get_state (MMSms *self)
@@ -541,6 +596,8 @@
  * Gets the storage in which this SMS is kept.
  *
  * Returns: A #MMSmsStorage specifying the storage.
+ *
+ * Since: 1.0
  */
 MMSmsStorage
 mm_sms_get_storage (MMSms *self)
@@ -559,6 +616,8 @@
  * Gets the PDU type on which this SMS is based.
  *
  * Returns: A #MMSmsPduType specifying the PDU type.
+ *
+ * Since: 1.0
  */
 MMSmsPduType
 mm_sms_get_pdu_type (MMSms *self)
@@ -577,6 +636,8 @@
  * Gets the 3GPP2 Teleservice ID.
  *
  * Returns: a #MMSmsCdmaTeleserviceId.
+ *
+ * Since: 1.2
  */
 MMSmsCdmaTeleserviceId
 mm_sms_get_teleservice_id (MMSms *self)
@@ -595,6 +656,8 @@
  * Gets the 3GPP2 Service Category.
  *
  * Returns: a #MMSmsCdmaServiceCategory.
+ *
+ * Since: 1.2
  */
 MMSmsCdmaServiceCategory
 mm_sms_get_service_category (MMSms *self)
@@ -609,12 +672,15 @@
 /**
  * mm_sms_send_finish:
  * @self: A #MMSms.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sms_send().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sms_send().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sms_send().
  *
- * Returns:  %TRUE if the operation succeeded, %FALSE if @error is set.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_send_finish (MMSms *self,
@@ -630,17 +696,22 @@
  * mm_sms_send:
  * @self: A #MMSms.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronously requests to queue the message for delivery.
  *
  * SMS objects can only be sent once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sms_send_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sms_send_finish() to get the result of the operation.
  *
  * See mm_sms_send_sync() for the synchronous, blocking version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_send (MMSms *self,
@@ -666,10 +737,12 @@
  *
  * SMS objects can only be sent once.
  *
- * The calling thread is blocked until a reply is received.
- * See mm_sms_send() for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See mm_sms_send()
+ * for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_send_sync (MMSms *self,
@@ -688,12 +761,15 @@
 /**
  * mm_sms_store_finish:
  * @self: A #MMSms.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_sms_store().
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *  mm_sms_store().
  * @error: Return location for error or %NULL.
  *
  * Finishes an operation started with mm_sms_store().
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_store_finish (MMSms *self,
@@ -708,19 +784,25 @@
 /**
  * mm_sms_store:
  * @self: A #MMSms.
- * @storage: A #MMSmsStorage specifying where to store the SMS, or #MM_SMS_STORAGE_UNKNOWN to use the default.
+ * @storage: A #MMSmsStorage specifying where to store the SMS, or
+ *  %MM_SMS_STORAGE_UNKNOWN to use the default.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or
+ *  %NULL.
  * @user_data: User data to pass to @callback.
  *
  * Asynchronoulsy requests to store the message in the device if not already done.
  *
  * SMS objects can only be stored once.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call mm_sms_store_finish() to get the result of the operation.
+ * When the operation is finished, @callback will be invoked in the
+ * <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
+ * of the thread you are calling this method from. You can then call
+ * mm_sms_store_finish() to get the result of the operation.
  *
  * See mm_sms_store_sync() for the synchronous, blocking version of this method.
+ *
+ * Since: 1.0
  */
 void
 mm_sms_store (MMSms *self,
@@ -741,18 +823,22 @@
 /**
  * mm_sms_store_sync:
  * @self: A #MMSms.
- * @storage: A #MMSmsStorage specifying where to store the SMS, or #MM_SMS_STORAGE_UNKNOWN to use the default.
+ * @storage: A #MMSmsStorage specifying where to store the SMS, or
+ *  %MM_SMS_STORAGE_UNKNOWN to use the default.
  * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Synchronoulsy requests to store the message in the device if not already done.
+ * Synchronoulsy requests to store the message in the device if not already
+ * done.
  *
  * SMS objects can only be stored once.
  *
- * The calling thread is blocked until a reply is received.
- * See mm_sms_store() for the asynchronous version of this method.
+ * The calling thread is blocked until a reply is received. See mm_sms_store()
+ * for the asynchronous version of this method.
  *
  * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
+ *
+ * Since: 1.0
  */
 gboolean
 mm_sms_store_sync (MMSms *self,
diff --git a/libmm-glib/mm-unlock-retries.c b/libmm-glib/mm-unlock-retries.c
index 935c7ce..08b10a2 100644
--- a/libmm-glib/mm-unlock-retries.c
+++ b/libmm-glib/mm-unlock-retries.c
@@ -32,7 +32,7 @@
  * mm_modem_get_unlock_retries() or mm_modem_peek_unlock_retries().
  */
 
-G_DEFINE_TYPE (MMUnlockRetries, mm_unlock_retries, G_TYPE_OBJECT);
+G_DEFINE_TYPE (MMUnlockRetries, mm_unlock_retries, G_TYPE_OBJECT)
 
 struct _MMUnlockRetriesPrivate {
     GHashTable *ht;
@@ -40,6 +40,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_set: (skip)
+ */
 void
 mm_unlock_retries_set (MMUnlockRetries *self,
                        MMModemLock lock,
@@ -50,6 +53,9 @@
                           GUINT_TO_POINTER (retries));
 }
 
+/**
+ * mm_unlock_retries_unset: (skip)
+ */
 void
 mm_unlock_retries_unset (MMUnlockRetries *self,
                          MMModemLock lock)
@@ -68,6 +74,8 @@
  * Gets the unlock retries for the given @lock.
  *
  * Returns: the unlock retries or %MM_UNLOCK_RETRIES_UNKNOWN if unknown.
+ *
+ * Since: 1.0
  */
 guint
 mm_unlock_retries_get (MMUnlockRetries *self,
@@ -85,6 +93,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_cmp: (skip)
+ */
 gboolean
 mm_unlock_retries_cmp (MMUnlockRetries *a,
                        MMUnlockRetries *b)
@@ -116,6 +127,8 @@
  * @user_data: (closure): data to pass to @callback.
  *
  * Executes @callback for each lock information found in @self.
+ *
+ * Since: 1.0
  */
 void
 mm_unlock_retries_foreach (MMUnlockRetries *self,
@@ -135,6 +148,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_get_dictionary: (skip)
+ */
 GVariant *
 mm_unlock_retries_get_dictionary (MMUnlockRetries *self)
 {
@@ -161,6 +177,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_new_from_dictionary: (skip)
+ */
 MMUnlockRetries *
 mm_unlock_retries_new_from_dictionary (GVariant *dictionary)
 {
@@ -184,6 +203,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_build_string: (skip)
+ */
 gchar *
 mm_unlock_retries_build_string (MMUnlockRetries *self)
 {
@@ -211,6 +233,9 @@
 
 /*****************************************************************************/
 
+/**
+ * mm_unlock_retries_new: (skip)
+ */
 MMUnlockRetries *
 mm_unlock_retries_new (void)
 {
@@ -221,7 +246,7 @@
 static void
 mm_unlock_retries_init (MMUnlockRetries *self)
 {
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self),
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                               MM_TYPE_UNLOCK_RETRIES,
                                               MMUnlockRetriesPrivate);
     self->priv->ht = g_hash_table_new (g_direct_hash,
diff --git a/libmm-glib/mm-unlock-retries.h b/libmm-glib/mm-unlock-retries.h
index e993821..279c7f4 100644
--- a/libmm-glib/mm-unlock-retries.h
+++ b/libmm-glib/mm-unlock-retries.h
@@ -36,6 +36,8 @@
  * MM_UNLOCK_RETRIES_UNKNOWN:
  *
  * Identifier for reporting unknown unlock retries.
+ *
+ * Since: 1.0
  */
 #define MM_UNLOCK_RETRIES_UNKNOWN 999
 
@@ -76,6 +78,8 @@
  * @user_data: data passed to the function.
  *
  * Specifies the type of function passed to mm_unlock_retries_foreach().
+ *
+ * Since: 1.0
  */
 typedef void (* MMUnlockRetriesForeachCb) (MMModemLock lock,
                                            guint count,
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index ffc0c0e..358e471 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -299,6 +299,21 @@
 XMM_COMMON_LIBADD_FLAGS   = $(builddir)/libmm-utils-xmm.la
 
 ################################################################################
+# common foxconn support
+################################################################################
+
+# Common Foxconn modem support library (MBIM only)
+if WITH_MBIM
+noinst_LTLIBRARIES += libmm-utils-foxconn.la
+libmm_utils_foxconn_la_SOURCES = \
+	foxconn/mm-broadband-modem-foxconn-t77w968.c \
+	foxconn/mm-broadband-modem-foxconn-t77w968.h \
+	$(NULL)
+FOXCONN_COMMON_COMPILER_FLAGS = -I$(top_srcdir)/plugins/foxconn
+FOXCONN_COMMON_LIBADD_FLAGS   = $(builddir)/libmm-utils-foxconn.la
+endif
+
+################################################################################
 # plugin: generic
 ################################################################################
 
@@ -814,6 +829,28 @@
 libmm_plugin_novatel_la_LIBADD   = $(NOVATEL_COMMON_LIBADD_FLAGS)
 
 ################################################################################
+# plugin: foxconn
+################################################################################
+
+pkglib_LTLIBRARIES += libmm-plugin-foxconn.la
+libmm_plugin_foxconn_la_SOURCES = \
+	foxconn/mm-plugin-foxconn.c \
+	foxconn/mm-plugin-foxconn.h \
+	$(NULL)
+libmm_plugin_foxconn_la_CPPFLAGS = $(PLUGIN_COMMON_COMPILER_FLAGS) $(FOXCONN_COMMON_COMPILER_FLAGS)
+libmm_plugin_foxconn_la_LDFLAGS  = $(PLUGIN_COMMON_LINKER_FLAGS)
+libmm_plugin_foxconn_la_LIBADD   = $(FOXCONN_COMMON_LIBADD_FLAGS)
+
+dist_udevrules_DATA += foxconn/77-mm-foxconn-port-types.rules
+
+dist_pkgdata_DATA += foxconn/mm-foxconn-t77w968-carrier-mapping.conf
+
+AM_CFLAGS += \
+	-DTESTUDEVRULESDIR_FOXCONN=\"${srcdir}/foxconn\" \
+	-DTESTKEYFILE_FOXCONN_T77W968=\"${srcdir}/foxconn/mm-foxconn-t77w968-carrier-mapping.conf\" \
+	$(NULL)
+
+################################################################################
 # plugin: altair lte
 ################################################################################
 
@@ -1081,7 +1118,7 @@
 libmm_plugin_ublox_la_LIBADD   = $(builddir)/libhelpers-ublox.la
 
 ################################################################################
-# plugin: dell (novatel, sierra or telit)
+# plugin: dell (novatel, sierra, telit or foxconn)
 ################################################################################
 
 pkglib_LTLIBRARIES += libmm-plugin-dell.la
@@ -1090,13 +1127,6 @@
 	dell/mm-plugin-dell.h \
 	$(NULL)
 
-if WITH_MBIM
-libmm_plugin_dell_la_SOURCES += \
-	dell/mm-broadband-modem-dell-dw5821e.h \
-	dell/mm-broadband-modem-dell-dw5821e.c \
-	$(NULL)
-endif
-
 libmm_plugin_dell_la_CPPFLAGS = \
 	$(PLUGIN_COMMON_COMPILER_FLAGS) \
 	$(NOVATEL_COMMON_COMPILER_FLAGS) \
@@ -1104,6 +1134,7 @@
 	$(TELIT_COMMON_COMPILER_FLAGS) \
 	$(XMM_COMMON_COMPILER_FLAGS) \
 	$(MBM_COMMON_COMPILER_FLAGS) \
+	$(FOXCONN_COMMON_COMPILER_FLAGS) \
 	$(NULL)
 libmm_plugin_dell_la_LDFLAGS = $(PLUGIN_COMMON_LINKER_FLAGS)
 libmm_plugin_dell_la_LIBADD = \
@@ -1112,15 +1143,13 @@
 	$(TELIT_COMMON_LIBADD_FLAGS) \
 	$(XMM_COMMON_LIBADD_FLAGS) \
 	$(MBM_COMMON_LIBADD_FLAGS) \
+	$(FOXCONN_COMMON_LIBADD_FLAGS) \
 	$(NULL)
 
 dist_udevrules_DATA += dell/77-mm-dell-port-types.rules
 
-dist_pkgdata_DATA += dell/mm-dell-dw5821e-carrier-mapping.conf
-
 AM_CFLAGS += \
 	-DTESTUDEVRULESDIR_DELL=\"${srcdir}/dell\" \
-	-DTESTKEYFILE_DELL_DW5821E=\"${srcdir}/dell/mm-dell-dw5821e-carrier-mapping.conf\" \
 	$(NULL)
 
 ################################################################################
diff --git a/plugins/dell/77-mm-dell-port-types.rules b/plugins/dell/77-mm-dell-port-types.rules
index 8efc2fc..94dfa8c 100644
--- a/plugins/dell/77-mm-dell-port-types.rules
+++ b/plugins/dell/77-mm-dell-port-types.rules
@@ -8,7 +8,7 @@
 LABEL="mm_dell_vendorcheck"
 SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
 
-# Dell DW5821e
+# Dell DW5821e (default 0x81d7, with esim support 0x81e0)
 #  if 02: primary port
 #  if 03: secondary port
 #  if 04: raw NMEA port
@@ -17,6 +17,10 @@
 ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81d7", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
 ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81d7", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_GPS}="1"
 ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81d7", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81e0", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81e0", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81e0", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="81e0", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_PORT_TYPE_QCDM}="1"
 
 # Dell DW5820e
 #  if 02: AT port
diff --git a/plugins/dell/mm-broadband-modem-dell-dw5821e.h b/plugins/dell/mm-broadband-modem-dell-dw5821e.h
deleted file mode 100644
index 6903a4e..0000000
--- a/plugins/dell/mm-broadband-modem-dell-dw5821e.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details:
- *
- * Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
- */
-
-#ifndef MM_BROADBAND_MODEM_DELL_DW5821E_H
-#define MM_BROADBAND_MODEM_DELL_DW5821E_H
-
-#include "mm-broadband-modem-mbim.h"
-
-#define MM_TYPE_BROADBAND_MODEM_DELL_DW5821E            (mm_broadband_modem_dell_dw5821e_get_type ())
-#define MM_BROADBAND_MODEM_DELL_DW5821E(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BROADBAND_MODEM_DELL_DW5821E, MMBroadbandModemDellDw5821e))
-#define MM_BROADBAND_MODEM_DELL_DW5821E_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  MM_TYPE_BROADBAND_MODEM_DELL_DW5821E, MMBroadbandModemDellDw5821eClass))
-#define MM_IS_BROADBAND_MODEM_DELL_DW5821E(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_BROADBAND_MODEM_DELL_DW5821E))
-#define MM_IS_BROADBAND_MODEM_DELL_DW5821E_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  MM_TYPE_BROADBAND_MODEM_DELL_DW5821E))
-#define MM_BROADBAND_MODEM_DELL_DW5821E_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  MM_TYPE_BROADBAND_MODEM_DELL_DW5821E, MMBroadbandModemDellDw5821eClass))
-
-typedef struct _MMBroadbandModemDellDw5821e MMBroadbandModemDellDw5821e;
-typedef struct _MMBroadbandModemDellDw5821eClass MMBroadbandModemDellDw5821eClass;
-typedef struct _MMBroadbandModemDellDw5821ePrivate MMBroadbandModemDellDw5821ePrivate;
-
-struct _MMBroadbandModemDellDw5821e {
-    MMBroadbandModemMbim parent;
-    MMBroadbandModemDellDw5821ePrivate *priv;
-};
-
-struct _MMBroadbandModemDellDw5821eClass{
-    MMBroadbandModemMbimClass parent;
-};
-
-GType mm_broadband_modem_dell_dw5821e_get_type (void);
-
-MMBroadbandModemDellDw5821e *mm_broadband_modem_dell_dw5821e_new (const gchar  *device,
-                                                                  const gchar **driver,
-                                                                  const gchar  *plugin,
-                                                                  guint16       vendor_id,
-                                                                  guint16       product_id);
-
-#endif /* MM_BROADBAND_MODEM_DELL_DW5821E_H */
diff --git a/plugins/dell/mm-plugin-dell.c b/plugins/dell/mm-plugin-dell.c
index c6085f9..e9f8a0b 100644
--- a/plugins/dell/mm-plugin-dell.c
+++ b/plugins/dell/mm-plugin-dell.c
@@ -16,7 +16,7 @@
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  *
- * Copyright (C) 2015 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2015-2019 Aleksander Morgado <aleksander@aleksander.es>
  */
 
 #include <string.h>
@@ -45,7 +45,7 @@
 #if defined WITH_MBIM
 #include "mm-broadband-modem-mbim.h"
 #include "mm-broadband-modem-mbim-xmm.h"
-#include "mm-broadband-modem-dell-dw5821e.h"
+#include "mm-broadband-modem-foxconn-t77w968.h"
 #endif
 
 #define MAX_PORT_PROBE_TIMEOUTS 3
@@ -399,13 +399,13 @@
 #if defined WITH_MBIM
     if (mm_port_probe_list_has_mbim_port (probes)) {
         /* Specific implementation for the DW5821e */
-        if (vendor == 0x413c && product == 0x81d7) {
-            mm_dbg ("MBIM-powered DW5821e modem found...");
-            return MM_BASE_MODEM (mm_broadband_modem_dell_dw5821e_new (uid,
-                                                                       drivers,
-                                                                       mm_plugin_get_name (self),
-                                                                       vendor,
-                                                                       product));
+        if (vendor == 0x413c && (product == 0x81d7 || product == 0x81e0)) {
+            mm_dbg ("MBIM-powered DW5821e (T77W968) modem found...");
+            return MM_BASE_MODEM (mm_broadband_modem_foxconn_t77w968_new (uid,
+                                                                          drivers,
+                                                                          mm_plugin_get_name (self),
+                                                                          vendor,
+                                                                          product));
         }
 
         if (mm_port_probe_list_is_xmm (probes)) {
diff --git a/plugins/foxconn/77-mm-foxconn-port-types.rules b/plugins/foxconn/77-mm-foxconn-port-types.rules
new file mode 100644
index 0000000..6b501ba
--- /dev/null
+++ b/plugins/foxconn/77-mm-foxconn-port-types.rules
@@ -0,0 +1,26 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move|bind", GOTO="mm_foxconn_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0489", GOTO="mm_foxconn_vendorcheck"
+GOTO="mm_foxconn_port_types_end"
+
+LABEL="mm_foxconn_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# Foxconn T77w968 (default 0xe0b4, with esim support 0xe0b5)
+#  if 02: primary port
+#  if 03: secondary port
+#  if 04: raw NMEA port
+#  if 05: diag/qcdm port
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b4", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b4", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b4", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b4", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b5", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b5", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b5", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e0b5", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+GOTO="mm_foxconn_port_types_end"
+LABEL="mm_foxconn_port_types_end"
diff --git a/plugins/dell/mm-broadband-modem-dell-dw5821e.c b/plugins/foxconn/mm-broadband-modem-foxconn-t77w968.c
similarity index 78%
rename from plugins/dell/mm-broadband-modem-dell-dw5821e.c
rename to plugins/foxconn/mm-broadband-modem-foxconn-t77w968.c
index 7622cf1..c594019 100644
--- a/plugins/dell/mm-broadband-modem-dell-dw5821e.c
+++ b/plugins/foxconn/mm-broadband-modem-foxconn-t77w968.c
@@ -10,7 +10,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details:
  *
- * Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2018-2019 Aleksander Morgado <aleksander@aleksander.es>
  */
 
 #include <config.h>
@@ -32,7 +32,7 @@
 #include "mm-base-modem-at.h"
 #include "mm-iface-modem.h"
 #include "mm-iface-modem-location.h"
-#include "mm-broadband-modem-dell-dw5821e.h"
+#include "mm-broadband-modem-foxconn-t77w968.h"
 
 #if defined WITH_QMI
 # include "mm-iface-modem-firmware.h"
@@ -47,7 +47,7 @@
 
 static MMIfaceModemLocation *iface_modem_location_parent;
 
-G_DEFINE_TYPE_EXTENDED (MMBroadbandModemDellDw5821e, mm_broadband_modem_dell_dw5821e, MM_TYPE_BROADBAND_MODEM_MBIM, 0,
+G_DEFINE_TYPE_EXTENDED (MMBroadbandModemFoxconnT77w968, mm_broadband_modem_foxconn_t77w968, MM_TYPE_BROADBAND_MODEM_MBIM, 0,
 #if defined WITH_QMI
                         G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init)
 #endif
@@ -59,7 +59,7 @@
     FEATURE_SUPPORTED
 } FeatureSupport;
 
-struct _MMBroadbandModemDellDw5821ePrivate {
+struct _MMBroadbandModemFoxconnT77w968Private {
     FeatureSupport unmanaged_gps_support;
 };
 
@@ -82,17 +82,17 @@
 }
 
 static void
-dell_get_firmware_version_ready (QmiClientDms *client,
-                                 GAsyncResult *res,
-                                 GTask        *task)
+foxconn_get_firmware_version_ready (QmiClientDms *client,
+                                    GAsyncResult *res,
+                                    GTask        *task)
 {
-    QmiMessageDmsDellGetFirmwareVersionOutput *output;
-    GError                                    *error = NULL;
-    MMFirmwareUpdateSettings                  *update_settings = NULL;
-    const gchar                               *str;
+    QmiMessageDmsFoxconnGetFirmwareVersionOutput *output;
+    GError                                       *error = NULL;
+    MMFirmwareUpdateSettings                     *update_settings = NULL;
+    const gchar                                  *str;
 
-    output = qmi_client_dms_dell_get_firmware_version_finish (client, res, &error);
-    if (!output || !qmi_message_dms_dell_get_firmware_version_output_get_result (output, &error))
+    output = qmi_client_dms_foxconn_get_firmware_version_finish (client, res, &error);
+    if (!output || !qmi_message_dms_foxconn_get_firmware_version_output_get_result (output, &error))
         goto out;
 
     /* Create update settings now */
@@ -100,7 +100,7 @@
                                                        MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC);
     mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT");
 
-    qmi_message_dms_dell_get_firmware_version_output_get_version (output, &str, NULL);
+    qmi_message_dms_foxconn_get_firmware_version_output_get_version (output, &str, NULL);
     mm_firmware_update_settings_set_version (update_settings, str);
 
  out:
@@ -112,7 +112,7 @@
     }
     g_object_unref (task);
     if (output)
-        qmi_message_dms_dell_get_firmware_version_output_unref (output);
+        qmi_message_dms_foxconn_get_firmware_version_output_unref (output);
 }
 
 static void
@@ -120,9 +120,9 @@
                                GAsyncReadyCallback   callback,
                                gpointer              user_data)
 {
-    GTask                                    *task;
-    QmiMessageDmsDellGetFirmwareVersionInput *input = NULL;
-    QmiClient                                *client = NULL;
+    GTask                                       *task;
+    QmiMessageDmsFoxconnGetFirmwareVersionInput *input = NULL;
+    QmiClient                                   *client = NULL;
 
     task = g_task_new (self, NULL, callback, user_data);
 
@@ -132,22 +132,24 @@
                                         NULL);
     if (!client) {
         g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
-                                 "Unable to load DW5821e version info: no QMI DMS client available");
+                                 "Unable to load T77w968 version info: no QMI DMS client available");
         g_object_unref (task);
         return;
     }
 
-    input = qmi_message_dms_dell_get_firmware_version_input_new ();
-    qmi_message_dms_dell_get_firmware_version_input_set_version_type (input,
-                                                                      QMI_DMS_DELL_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG,
-                                                                      NULL);
-    qmi_client_dms_dell_get_firmware_version (QMI_CLIENT_DMS (client),
-                                              input,
-                                              10,
-                                              NULL,
-                                              (GAsyncReadyCallback)dell_get_firmware_version_ready,
-                                              task);
-    qmi_message_dms_dell_get_firmware_version_input_unref (input);
+    input = qmi_message_dms_foxconn_get_firmware_version_input_new ();
+    qmi_message_dms_foxconn_get_firmware_version_input_set_version_type (
+        input,
+        QMI_DMS_FOXCONN_FIRMWARE_VERSION_TYPE_FIRMWARE_MCFG,
+        NULL);
+    qmi_client_dms_foxconn_get_firmware_version (
+        QMI_CLIENT_DMS (client),
+        input,
+        10,
+        NULL,
+        (GAsyncReadyCallback)foxconn_get_firmware_version_ready,
+        task);
+    qmi_message_dms_foxconn_get_firmware_version_input_unref (input);
 }
 
 #endif
@@ -189,7 +191,7 @@
     /* If we have a GPS port and an AT port, enable unmanaged GPS support */
     if (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)) &&
         mm_base_modem_peek_port_gps (MM_BASE_MODEM (self))) {
-        MM_BROADBAND_MODEM_DELL_DW5821E (self)->priv->unmanaged_gps_support = FEATURE_SUPPORTED;
+        MM_BROADBAND_MODEM_FOXCONN_T77W968 (self)->priv->unmanaged_gps_support = FEATURE_SUPPORTED;
         sources |= MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED;
     }
 
@@ -248,9 +250,9 @@
     source = GPOINTER_TO_UINT (g_task_get_task_data (task));
 
     iface_modem_location_parent->disable_location_gathering (self,
-                                                            source,
-                                                            (GAsyncReadyCallback)parent_disable_location_gathering_ready,
-                                                            task);
+							     source,
+							     (GAsyncReadyCallback)parent_disable_location_gathering_ready,
+							     task);
 }
 
 static void
@@ -275,8 +277,8 @@
                             GAsyncReadyCallback    callback,
                             gpointer               user_data)
 {
-    MMBroadbandModemDellDw5821e *self = MM_BROADBAND_MODEM_DELL_DW5821E (_self);
-    GTask                       *task;
+    MMBroadbandModemFoxconnT77w968 *self = MM_BROADBAND_MODEM_FOXCONN_T77W968 (_self);
+    GTask                          *task;
 
     task = g_task_new (self, NULL, callback, user_data);
     g_task_set_task_data (task, GUINT_TO_POINTER (source), NULL);
@@ -326,9 +328,9 @@
                                         GAsyncResult         *res,
                                         GTask                *task)
 {
-    MMBroadbandModemDellDw5821e *self = MM_BROADBAND_MODEM_DELL_DW5821E (_self);
-    GError                      *error = NULL;
-    MMModemLocationSource        source;
+    MMBroadbandModemFoxconnT77w968 *self = MM_BROADBAND_MODEM_FOXCONN_T77W968 (_self);
+    GError                         *error = NULL;
+    MMModemLocationSource           source;
 
     if (!iface_modem_location_parent->enable_location_gathering_finish (_self, res, &error)) {
         g_task_return_error (task, error);
@@ -373,14 +375,14 @@
 
 /*****************************************************************************/
 
-MMBroadbandModemDellDw5821e *
-mm_broadband_modem_dell_dw5821e_new (const gchar  *device,
-                                     const gchar **drivers,
-                                     const gchar  *plugin,
-                                     guint16       vendor_id,
-                                     guint16       product_id)
+MMBroadbandModemFoxconnT77w968 *
+mm_broadband_modem_foxconn_t77w968_new (const gchar  *device,
+                                        const gchar **drivers,
+                                        const gchar  *plugin,
+                                        guint16       vendor_id,
+                                        guint16       product_id)
 {
-    return g_object_new (MM_TYPE_BROADBAND_MODEM_DELL_DW5821E,
+    return g_object_new (MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968,
                          MM_BASE_MODEM_DEVICE,     device,
                          MM_BASE_MODEM_DRIVERS,    drivers,
                          MM_BASE_MODEM_PLUGIN,     plugin,
@@ -390,15 +392,15 @@
                          MM_IFACE_MODEM_SIM_HOT_SWAP_CONFIGURED,             FALSE,
                          MM_IFACE_MODEM_PERIODIC_SIGNAL_CHECK_DISABLED,      TRUE,
                          MM_IFACE_MODEM_LOCATION_ALLOW_GPS_UNMANAGED_ALWAYS, TRUE,
-                         MM_IFACE_MODEM_CARRIER_CONFIG_MAPPING,              PKGDATADIR "/mm-dell-dw5821e-carrier-mapping.conf",
+                         MM_IFACE_MODEM_CARRIER_CONFIG_MAPPING,              PKGDATADIR "/mm-foxconn-t77w968-carrier-mapping.conf",
                          NULL);
 }
 
 static void
-mm_broadband_modem_dell_dw5821e_init (MMBroadbandModemDellDw5821e *self)
+mm_broadband_modem_foxconn_t77w968_init (MMBroadbandModemFoxconnT77w968 *self)
 {
     /* Initialize private data */
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_BROADBAND_MODEM_DELL_DW5821E, MMBroadbandModemDellDw5821ePrivate);
+    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968, MMBroadbandModemFoxconnT77w968Private);
     self->priv->unmanaged_gps_support = FEATURE_SUPPORT_UNKNOWN;
 }
 
@@ -427,9 +429,9 @@
 #endif
 
 static void
-mm_broadband_modem_dell_dw5821e_class_init (MMBroadbandModemDellDw5821eClass *klass)
+mm_broadband_modem_foxconn_t77w968_class_init (MMBroadbandModemFoxconnT77w968Class *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-    g_type_class_add_private (object_class, sizeof (MMBroadbandModemDellDw5821ePrivate));
+    g_type_class_add_private (object_class, sizeof (MMBroadbandModemFoxconnT77w968Private));
 }
diff --git a/plugins/foxconn/mm-broadband-modem-foxconn-t77w968.h b/plugins/foxconn/mm-broadband-modem-foxconn-t77w968.h
new file mode 100644
index 0000000..9d14503
--- /dev/null
+++ b/plugins/foxconn/mm-broadband-modem-foxconn-t77w968.h
@@ -0,0 +1,49 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details:
+ *
+ * Copyright (C) 2018-2019 Aleksander Morgado <aleksander@aleksander.es>
+ */
+
+#ifndef MM_BROADBAND_MODEM_FOXCONN_T77W968_H
+#define MM_BROADBAND_MODEM_FOXCONN_T77W968_H
+
+#include "mm-broadband-modem-mbim.h"
+
+#define MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968            (mm_broadband_modem_foxconn_t77w968_get_type ())
+#define MM_BROADBAND_MODEM_FOXCONN_T77W968(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968, MMBroadbandModemFoxconnT77w968))
+#define MM_BROADBAND_MODEM_FOXCONN_T77W968_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968, MMBroadbandModemFoxconnT77w968Class))
+#define MM_IS_BROADBAND_MODEM_FOXCONN_T77W968(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968))
+#define MM_IS_BROADBAND_MODEM_FOXCONN_T77W968_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968))
+#define MM_BROADBAND_MODEM_FOXCONN_T77W968_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  MM_TYPE_BROADBAND_MODEM_FOXCONN_T77W968, MMBroadbandModemFoxconnT77w968Class))
+
+typedef struct _MMBroadbandModemFoxconnT77w968 MMBroadbandModemFoxconnT77w968;
+typedef struct _MMBroadbandModemFoxconnT77w968Class MMBroadbandModemFoxconnT77w968Class;
+typedef struct _MMBroadbandModemFoxconnT77w968Private MMBroadbandModemFoxconnT77w968Private;
+
+struct _MMBroadbandModemFoxconnT77w968 {
+    MMBroadbandModemMbim parent;
+    MMBroadbandModemFoxconnT77w968Private *priv;
+};
+
+struct _MMBroadbandModemFoxconnT77w968Class{
+    MMBroadbandModemMbimClass parent;
+};
+
+GType mm_broadband_modem_foxconn_t77w968_get_type (void);
+
+MMBroadbandModemFoxconnT77w968 *mm_broadband_modem_foxconn_t77w968_new (const gchar  *device,
+									const gchar **driver,
+									const gchar  *plugin,
+									guint16       vendor_id,
+									guint16       product_id);
+
+#endif /* MM_BROADBAND_MODEM_FOXCONN_T77W968_H */
diff --git a/plugins/dell/mm-dell-dw5821e-carrier-mapping.conf b/plugins/foxconn/mm-foxconn-t77w968-carrier-mapping.conf
similarity index 97%
rename from plugins/dell/mm-dell-dw5821e-carrier-mapping.conf
rename to plugins/foxconn/mm-foxconn-t77w968-carrier-mapping.conf
index ec14553..20639f7 100644
--- a/plugins/dell/mm-dell-dw5821e-carrier-mapping.conf
+++ b/plugins/foxconn/mm-foxconn-t77w968-carrier-mapping.conf
@@ -1,13 +1,13 @@
 
 #
-# DW5821e carrier mapping table
+# T77W968 carrier mapping table
 #
 # This table maps the MCCMNC of the SIM card with the corresponding
 # configuration description as reported by the QMI PDC service in
 # this module.
 #
 
-[dell dw5821e]
+[foxconn t77w968]
 
 # AT&T
 302220=ATT
diff --git a/plugins/foxconn/mm-plugin-foxconn.c b/plugins/foxconn/mm-plugin-foxconn.c
new file mode 100644
index 0000000..5bd2f88
--- /dev/null
+++ b/plugins/foxconn/mm-plugin-foxconn.c
@@ -0,0 +1,127 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Copyright (C) 2019 Aleksander Morgado <aleksander@aleksander.es>
+ */
+
+#include <string.h>
+#include <gmodule.h>
+
+#define _LIBMM_INSIDE_MM
+#include <libmm-glib.h>
+
+#include "mm-plugin-foxconn.h"
+#include "mm-log.h"
+#include "mm-broadband-modem.h"
+
+#if defined WITH_QMI
+#include "mm-broadband-modem-qmi.h"
+#endif
+
+#if defined WITH_MBIM
+#include "mm-broadband-modem-foxconn-t77w968.h"
+#endif
+
+G_DEFINE_TYPE (MMPluginFoxconn, mm_plugin_foxconn, MM_TYPE_PLUGIN)
+
+MM_PLUGIN_DEFINE_MAJOR_VERSION
+MM_PLUGIN_DEFINE_MINOR_VERSION
+
+/*****************************************************************************/
+
+static MMBaseModem *
+create_modem (MMPlugin     *self,
+              const gchar  *uid,
+              const gchar **drivers,
+              guint16       vendor,
+              guint16       product,
+              GList        *probes,
+              GError      **error)
+{
+#if defined WITH_QMI
+    if (mm_port_probe_list_has_qmi_port (probes)) {
+        mm_dbg ("QMI-powered Foxconn-branded modem found...");
+        return MM_BASE_MODEM (mm_broadband_modem_qmi_new (uid,
+                                                          drivers,
+                                                          mm_plugin_get_name (self),
+                                                          vendor,
+                                                          product));
+    }
+#endif
+
+#if defined WITH_MBIM
+    if (mm_port_probe_list_has_mbim_port (probes)) {
+        /* Specific implementation for the T77W968 */
+        if (product == 0xe0b4 || product == 0xe0b5) {
+            mm_dbg ("MBIM-powered T77W968 modem found...");
+            return MM_BASE_MODEM (mm_broadband_modem_foxconn_t77w968_new (uid,
+									  drivers,
+									  mm_plugin_get_name (self),
+									  vendor,
+									  product));
+        }
+
+        mm_dbg ("MBIM-powered Foxconn-branded modem found...");
+        return MM_BASE_MODEM (mm_broadband_modem_mbim_new (uid,
+                                                           drivers,
+                                                           mm_plugin_get_name (self),
+                                                           vendor,
+                                                           product));
+    }
+#endif
+
+    mm_dbg ("Foxconn-branded generic modem found...");
+    return MM_BASE_MODEM (mm_broadband_modem_new (uid,
+                                                  drivers,
+                                                  mm_plugin_get_name (self),
+                                                  vendor,
+                                                  product));
+}
+
+/*****************************************************************************/
+
+G_MODULE_EXPORT MMPlugin *
+mm_plugin_create (void)
+{
+    static const gchar *subsystems[] = { "tty", "net", "usb", NULL };
+    static const guint16 vendors[] = { 0x0489, 0 };
+
+    return MM_PLUGIN (
+        g_object_new (MM_TYPE_PLUGIN_FOXCONN,
+                      MM_PLUGIN_NAME,               "Foxconn",
+                      MM_PLUGIN_ALLOWED_SUBSYSTEMS, subsystems,
+                      MM_PLUGIN_ALLOWED_VENDOR_IDS, vendors,
+                      MM_PLUGIN_ALLOWED_AT,         TRUE,
+                      MM_PLUGIN_ALLOWED_QCDM,       TRUE,
+                      MM_PLUGIN_ALLOWED_QMI,        TRUE,
+                      MM_PLUGIN_ALLOWED_MBIM,       TRUE,
+                      NULL));
+}
+
+static void
+mm_plugin_foxconn_init (MMPluginFoxconn *self)
+{
+}
+
+static void
+mm_plugin_foxconn_class_init (MMPluginFoxconnClass *klass)
+{
+    MMPluginClass *plugin_class = MM_PLUGIN_CLASS (klass);
+
+    plugin_class->create_modem = create_modem;
+}
diff --git a/plugins/foxconn/mm-plugin-foxconn.h b/plugins/foxconn/mm-plugin-foxconn.h
new file mode 100644
index 0000000..4a22cee
--- /dev/null
+++ b/plugins/foxconn/mm-plugin-foxconn.h
@@ -0,0 +1,46 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Copyright (C) 2019 Aleksander Morgado <aleksander@aleksander.es>
+ */
+
+#ifndef MM_PLUGIN_FOXCONN_H
+#define MM_PLUGIN_FOXCONN_H
+
+#include "mm-plugin.h"
+
+#define MM_TYPE_PLUGIN_FOXCONN            (mm_plugin_foxconn_get_type ())
+#define MM_PLUGIN_FOXCONN(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_PLUGIN_FOXCONN, MMPluginFoxconn))
+#define MM_PLUGIN_FOXCONN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  MM_TYPE_PLUGIN_FOXCONN, MMPluginFoxconnClass))
+#define MM_IS_PLUGIN_FOXCONN(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_PLUGIN_FOXCONN))
+#define MM_IS_PLUGIN_FOXCONN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  MM_TYPE_PLUGIN_FOXCONN))
+#define MM_PLUGIN_FOXCONN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  MM_TYPE_PLUGIN_FOXCONN, MMPluginFoxconnClass))
+
+typedef struct {
+    MMPlugin parent;
+} MMPluginFoxconn;
+
+typedef struct {
+    MMPluginClass parent;
+} MMPluginFoxconnClass;
+
+GType mm_plugin_foxconn_get_type (void);
+
+G_MODULE_EXPORT MMPlugin *mm_plugin_create (void);
+
+#endif /* MM_PLUGIN_FOXCONN_H */
diff --git a/plugins/quectel/77-mm-quectel-port-types.rules b/plugins/quectel/77-mm-quectel-port-types.rules
index eb6c0a7..7368c13 100644
--- a/plugins/quectel/77-mm-quectel-port-types.rules
+++ b/plugins/quectel/77-mm-quectel-port-types.rules
@@ -22,9 +22,19 @@
 #  ttyUSB1 (if #1): GPS data port
 #  ttyUSB2 (if #2): AT primary port
 #  ttyUSB3 (if #3): AT secondary port
-ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_QCDM}="1"
 ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_GPS}="1"
-ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
-ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+
+# Quectel BG96
+#  ttyUSB0 (if #0): QCDM/DIAG port
+#  ttyUSB1 (if #1): GPS data port
+#  ttyUSB2 (if #2): AT primary port
+#  ttyUSB3 (if #3): AT secondary port
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
 
 LABEL="mm_quectel_port_types_end"
diff --git a/plugins/telit/mm-broadband-modem-telit.c b/plugins/telit/mm-broadband-modem-telit.c
index d6b1ea2..bacae32 100644
--- a/plugins/telit/mm-broadband-modem-telit.c
+++ b/plugins/telit/mm-broadband-modem-telit.c
@@ -30,6 +30,7 @@
 #include "mm-base-modem-at.h"
 #include "mm-iface-modem.h"
 #include "mm-iface-modem-3gpp.h"
+#include "mm-iface-modem-location.h"
 #include "mm-broadband-modem-telit.h"
 #include "mm-modem-helpers-telit.h"
 #include "mm-telit-enums-types.h"
@@ -38,14 +39,17 @@
 static void iface_modem_init (MMIfaceModem *iface);
 static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface);
 static void shared_telit_init (MMSharedTelit *iface);
+static void iface_modem_location_init (MMIfaceModemLocation *iface);
 
 static MMIfaceModem *iface_modem_parent;
 static MMIfaceModem3gpp *iface_modem_3gpp_parent;
+static MMIfaceModemLocation *iface_modem_location_parent;
 
 G_DEFINE_TYPE_EXTENDED (MMBroadbandModemTelit, mm_broadband_modem_telit, MM_TYPE_BROADBAND_MODEM, 0,
                         G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)
                         G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init)
-                        G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_TELIT, shared_telit_init));
+                        G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_TELIT, shared_telit_init)
+                        G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init));
 
 #define CSIM_UNLOCK_MAX_TIMEOUT 3
 
@@ -62,8 +66,341 @@
     GTask *csim_lock_task;
     guint csim_lock_timeout_id;
     gboolean parse_qss;
+    MMModemLocationSource enabled_sources;
 };
 
+
+typedef struct {
+    MMModemLocationSource source;
+    gint gps_enable_step;
+} LocationGatheringContext;
+
+/*
+ * AT$GPSNMUN
+ *    enable:  0 NMEA stream disabled (default)
+ *             1 NMEA stream enabled in the form $GPSNMUN: <nmea sentence><CR>
+ *             2 NMEA stream enabled in the form <nmea sentence><CR>
+ *             3 dedicated NMEA stream
+ *    GGA:     0 disable (default), 1 enable
+ *    GLL:     0 disable (default), 1 enable
+ *    GSA:     0 disable (default), 1 enable
+ *    GSV:     0 disable (default), 1 enable
+ *    RMC:     0 disable (default), 1 enable
+ *    VTG:     0 disable (default), 1 enable
+ */
+static const gchar *gps_enable[] = {
+    "$GPSP=1",
+    "$GPSNMUN=2,1,1,1,1,1,1"
+};
+
+static gboolean
+disable_location_gathering_finish (MMIfaceModemLocation *self,
+                                   GAsyncResult *res,
+                                   GError **error)
+{
+    return g_task_propagate_boolean (G_TASK (res), error);
+}
+
+static void
+gps_disabled_ready (MMBaseModem *self,
+                    GAsyncResult *res,
+                    GTask *task)
+{
+    LocationGatheringContext *ctx;
+    MMPortSerialGps *gps_port;
+    GError *error = NULL;
+
+    mm_base_modem_at_command_finish (self, res, &error);
+    ctx = g_task_get_task_data (task);
+    /* Only use the GPS port in NMEA/RAW setups */
+    if (ctx->source & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                       MM_MODEM_LOCATION_SOURCE_GPS_RAW)) {
+        /* Even if we get an error here, we try to close the GPS port */
+        gps_port = mm_base_modem_peek_port_gps (self);
+        if (gps_port)
+            mm_port_serial_close (MM_PORT_SERIAL (gps_port));
+    }
+
+    if (error)
+        g_task_return_error (task, error);
+    else
+        g_task_return_boolean (task, TRUE);
+
+    g_object_unref (task);
+}
+
+static void
+disable_location_gathering (MMIfaceModemLocation *self,
+                            MMModemLocationSource source,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data)
+{
+    MMBroadbandModemTelit *telit = MM_BROADBAND_MODEM_TELIT (self);
+    gboolean stop_gps = FALSE;
+    LocationGatheringContext *ctx;
+    GTask *task;
+
+    ctx = g_new (LocationGatheringContext, 1);
+    ctx->source = source;
+
+    task = g_task_new (self, NULL, callback, user_data);
+    g_task_set_task_data (task, ctx, g_free);
+
+    /* Only stop GPS engine if no GPS-related sources enabled */
+    if (source & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                  MM_MODEM_LOCATION_SOURCE_GPS_RAW |
+                  MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED)) {
+        telit->priv->enabled_sources &= ~source;
+
+        if (!(telit->priv->enabled_sources & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                                            MM_MODEM_LOCATION_SOURCE_GPS_RAW |
+                                            MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED)))
+            stop_gps = TRUE;
+    }
+
+    if (stop_gps) {
+        mm_base_modem_at_command (MM_BASE_MODEM (self),
+                                  "$GPSP=0",
+                                  3,
+                                  FALSE,
+                                  (GAsyncReadyCallback)gps_disabled_ready,
+                                  task);
+        return;
+    }
+    /* For any other location (e.g. 3GPP), or if still some GPS needed, just return */
+    g_task_return_boolean (task, TRUE);
+    g_object_unref (task);
+}
+
+static void
+gps_enabled_ready (MMBaseModem *self,
+                   GAsyncResult *res,
+                   GTask *task)
+{
+    LocationGatheringContext *ctx;
+    GError *error = NULL;
+
+    ctx = g_task_get_task_data (task);
+    if (!mm_base_modem_at_command_finish (self, res, &error)) {
+        mm_warn ("telit: couldn't power up GNSS controller: '%s'", error->message);
+        g_task_return_error (task, error);
+        g_object_unref (task);
+        return;
+    }
+    /* After Receiver was powered up we still have to enable unsolicited NMEA events */
+    if (ctx->gps_enable_step < G_N_ELEMENTS (gps_enable)) {
+        mm_base_modem_at_command (MM_BASE_MODEM (self),
+                                  gps_enable[ctx->gps_enable_step++],
+                                  3,
+                                  FALSE,
+                                  (GAsyncReadyCallback)gps_enabled_ready,
+                                  task);
+        return;
+    }
+    mm_info("telit: GNSS controller is powered up");
+    /* Only use the GPS port in NMEA/RAW setups */
+    if (ctx->source & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                       MM_MODEM_LOCATION_SOURCE_GPS_RAW)) {
+        MMPortSerialGps *gps_port;
+
+        gps_port = mm_base_modem_peek_port_gps (self);
+        if (!gps_port ||
+            !mm_port_serial_open (MM_PORT_SERIAL (gps_port), &error)) {
+            if (error)
+                g_task_return_error (task, error);
+            else
+                g_task_return_new_error (task,
+                                         MM_CORE_ERROR,
+                                         MM_CORE_ERROR_FAILED,
+                                         "Couldn't open raw GPS serial port");
+        } else
+            g_task_return_boolean (task, TRUE);
+    } else
+        g_task_return_boolean (task, TRUE);
+
+    g_object_unref (task);
+}
+
+static void
+parent_enable_location_gathering_ready (MMIfaceModemLocation *_self,
+                                        GAsyncResult *res,
+                                        GTask *task)
+{
+    MMBroadbandModemTelit *self = MM_BROADBAND_MODEM_TELIT (_self);
+    LocationGatheringContext *ctx;
+    gboolean start_gps = FALSE;
+    GError *error = NULL;
+
+    if (!iface_modem_location_parent->enable_location_gathering_finish (_self, res, &error)) {
+        g_task_return_error (task, error);
+        g_object_unref (task);
+        return;
+    }
+    /* Now our own enabling */
+    ctx = g_task_get_task_data (task);
+
+    /* NMEA, RAW and UNMANAGED are all enabled in the same way */
+    if (ctx->source & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                       MM_MODEM_LOCATION_SOURCE_GPS_RAW |
+                       MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED)) {
+        /* Only start GPS engine if not done already */
+        if (!(self->priv->enabled_sources & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                                             MM_MODEM_LOCATION_SOURCE_GPS_RAW |
+                                             MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED)))
+            start_gps = TRUE;
+        self->priv->enabled_sources |= ctx->source;
+    }
+
+    if (start_gps && ctx->gps_enable_step < G_N_ELEMENTS (gps_enable)) {
+        mm_base_modem_at_command (MM_BASE_MODEM (self),
+                                  gps_enable[ctx->gps_enable_step++],
+                                  3,
+                                  FALSE,
+                                  (GAsyncReadyCallback)gps_enabled_ready,
+                                  task);
+        return;
+    }
+    /* For any other location (e.g. 3GPP), or if GPS already running just return */
+    g_task_return_boolean (task, TRUE);
+    g_object_unref (task);
+}
+
+static void
+enable_location_gathering (MMIfaceModemLocation *self,
+                           MMModemLocationSource source,
+                           GAsyncReadyCallback callback,
+                           gpointer user_data)
+{
+    LocationGatheringContext *ctx;
+    GTask *task;
+
+    ctx = g_new (LocationGatheringContext, 1);
+    ctx->source = source;
+    ctx->gps_enable_step = 0;
+    task = g_task_new (self, NULL, callback, user_data);
+    g_task_set_task_data (task, ctx, g_free);
+
+    /* Chain up parent's gathering enable */
+    iface_modem_location_parent->enable_location_gathering (
+        self,
+        source,
+        (GAsyncReadyCallback)parent_enable_location_gathering_ready,
+        task);
+}
+
+static void
+trace_received (MMPortSerialGps *port,
+                const gchar *trace,
+                MMIfaceModemLocation *self)
+{
+    mm_iface_modem_location_gps_update (self, trace);
+}
+
+static gboolean
+enable_location_gathering_finish (MMIfaceModemLocation *self,
+                                  GAsyncResult *res,
+                                  GError **error)
+{
+    return g_task_propagate_boolean (G_TASK (res), error);
+}
+
+static void
+setup_ports (MMBroadbandModem *self)
+{
+    MMPortSerialGps *gps_data_port;
+
+    /* Call parent's setup ports first always */
+    MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_telit_parent_class)->setup_ports (self);
+
+    gps_data_port = mm_base_modem_peek_port_gps (MM_BASE_MODEM (self));
+    if (gps_data_port) {
+        /* It may happen that the modem was started with GPS already enabled,
+         * in this case GPSP AT command returns always error. Disable it for consistency
+         */
+        mm_base_modem_at_command (MM_BASE_MODEM (self),
+                                  "$GPSP=0", 3, FALSE, FALSE, NULL);
+
+        /* Add handler for the NMEA traces */
+        mm_port_serial_gps_add_trace_handler (gps_data_port,
+                                              (MMPortSerialGpsTraceFn)trace_received,
+                                              self,
+                                              NULL);
+    }
+}
+
+static MMModemLocationSource
+location_load_capabilities_finish (MMIfaceModemLocation *self,
+                                   GAsyncResult *res,
+                                   GError **error)
+{
+    GError *inner_error = NULL;
+    gssize value;
+
+    value = g_task_propagate_int (G_TASK (res), &inner_error);
+    if (inner_error) {
+        g_propagate_error (error, inner_error);
+        return MM_MODEM_LOCATION_SOURCE_NONE;
+    }
+    return (MMModemLocationSource)value;
+}
+
+static void
+gpsp_test_ready (MMIfaceModemLocation *self,
+                 GAsyncResult *res,
+                 GTask *task)
+{
+    GError *error = NULL;
+    MMModemLocationSource sources;
+
+    sources = GPOINTER_TO_UINT (g_task_get_task_data (task));
+    mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
+    if (error) {
+        mm_dbg ("telit: GPS controller not supported: %s", error->message);
+        g_clear_error (&error);
+    } else if (mm_base_modem_get_port_gps (MM_BASE_MODEM (self)))
+        sources |= (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
+                    MM_MODEM_LOCATION_SOURCE_GPS_RAW  |
+                    MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED);
+
+    g_task_return_int (task, sources);
+    g_object_unref (task);
+}
+
+static void
+parent_load_capabilities_ready (MMIfaceModemLocation *self,
+                                GAsyncResult *res,
+                                GTask *task)
+{
+    MMModemLocationSource sources;
+    GError *error = NULL;
+
+    sources = iface_modem_location_parent->load_capabilities_finish (self, res, &error);
+    if (error) {
+        g_task_return_error (task, error);
+        g_object_unref (task);
+        return;
+    }
+    g_task_set_task_data (task, GUINT_TO_POINTER (sources), NULL);
+    mm_base_modem_at_command (MM_BASE_MODEM (self),
+                              "$GPSP=?",
+                              3,
+                              TRUE,
+                              (GAsyncReadyCallback)gpsp_test_ready,
+                              task);
+}
+
+static void
+location_load_capabilities (MMIfaceModemLocation *self,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data)
+{
+    /* Chain up parent's setup */
+    iface_modem_location_parent->load_capabilities (
+        self,
+        (GAsyncReadyCallback)parent_load_capabilities_ready,
+        g_task_new (self, NULL, callback, user_data));
+}
+
 /*****************************************************************************/
 /* After Sim Unlock (Modem interface) */
 
@@ -710,7 +1047,7 @@
 {
     mm_base_modem_at_command (MM_BASE_MODEM (self),
                               "AT#REBOOT",
-                              3,
+                              8,
                               FALSE,
                               callback,
                               user_data);
@@ -1071,9 +1408,24 @@
 }
 
 static void
+iface_modem_location_init (MMIfaceModemLocation *iface)
+{
+    iface_modem_location_parent = g_type_interface_peek_parent (iface);
+
+    iface->load_capabilities = location_load_capabilities;
+    iface->load_capabilities_finish = location_load_capabilities_finish;
+    iface->enable_location_gathering = enable_location_gathering;
+    iface->enable_location_gathering_finish = enable_location_gathering_finish;
+    iface->disable_location_gathering = disable_location_gathering;
+    iface->disable_location_gathering_finish = disable_location_gathering_finish;
+}
+
+static void
 mm_broadband_modem_telit_class_init (MMBroadbandModemTelitClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
+    MMBroadbandModemClass *broadband_modem_class = MM_BROADBAND_MODEM_CLASS (klass);
 
     g_type_class_add_private (object_class, sizeof (MMBroadbandModemTelitPrivate));
+    broadband_modem_class->setup_ports = setup_ports;
 }
diff --git a/plugins/telit/mm-modem-helpers-telit.c b/plugins/telit/mm-modem-helpers-telit.c
index e4bacc5..14328cf 100644
--- a/plugins/telit/mm-modem-helpers-telit.c
+++ b/plugins/telit/mm-modem-helpers-telit.c
@@ -83,7 +83,7 @@
 #define MM_MODEM_BAND_TELIT_3G_LAST  MM_MODEM_BAND_UTRAN_19
 
 #define B3G_NUM(band) band_utran_index[band]
-#define B3G_FLAG(band) ((B3G_NUM (band) > 0) ? (1 << (B3G_NUM (band) - B3G_NUM (MM_MODEM_BAND_TELIT_3G_FIRST))) : 0)
+#define B3G_FLAG(band) ((B3G_NUM (band) > 0) ? (1LL << (B3G_NUM (band) - B3G_NUM (MM_MODEM_BAND_TELIT_3G_FIRST))) : 0)
 
 /* Index of the arrays is the telit 3G band value.
  * The bitmask value here is built from the 3G MMModemBand values right away.
@@ -93,10 +93,10 @@
  */
 
 #define TELIT_3G_TO_MM_BAND_MASK_DEFAULT_N_ELEMENTS 27
-static guint32 telit_3g_to_mm_band_mask_default[TELIT_3G_TO_MM_BAND_MASK_DEFAULT_N_ELEMENTS];
+static guint64 telit_3g_to_mm_band_mask_default[TELIT_3G_TO_MM_BAND_MASK_DEFAULT_N_ELEMENTS];
 
 #define TELIT_3G_TO_MM_BAND_MASK_ALTERNATE_N_ELEMENTS 20
-static guint32 telit_3g_to_mm_band_mask_alternate[TELIT_3G_TO_MM_BAND_MASK_ALTERNATE_N_ELEMENTS];
+static guint64 telit_3g_to_mm_band_mask_alternate[TELIT_3G_TO_MM_BAND_MASK_ALTERNATE_N_ELEMENTS];
 
 static void
 initialize_telit_3g_to_mm_band_masks (void)
@@ -198,14 +198,14 @@
                             GError   **error)
 {
     guint32        mask2g = 0;
-    guint32        mask3g = 0;
+    guint64        mask3g = 0;
     guint64        mask4g = 0;
     guint          i;
     gint           flag2g = -1;
     gint           flag3g = -1;
     gint           flag4g = -1;
     gchar         *cmd;
-    const guint32 *telit_3g_to_mm_band_mask;
+    const guint64 *telit_3g_to_mm_band_mask;
     guint          telit_3g_to_mm_band_mask_n_elements;
 
     initialize_telit_3g_to_mm_band_masks ();
@@ -229,7 +229,8 @@
             (band >= MM_MODEM_BAND_TELIT_2G_FIRST) && (band <= MM_MODEM_BAND_TELIT_2G_LAST))
             mask2g += B2G_FLAG (band);
 
-        /* Convert 3G bands into a bitmask, to match against telit_3g_to_mm_band_mask. */
+        /* Convert 3G bands into a bitmask, to match against telit_3g_to_mm_band_mask. We use
+         * a 64-bit explicit bitmask so that all values fit correctly. */
         if (flag3g && mm_common_band_is_utran (band) &&
             (B3G_NUM (band) >= B3G_NUM (MM_MODEM_BAND_TELIT_3G_FIRST)) && (B3G_NUM (band) <= B3G_NUM (MM_MODEM_BAND_TELIT_3G_LAST)))
             mask3g += B3G_FLAG (band);
@@ -429,7 +430,7 @@
     GArray        *values = NULL;
     gchar         *match_str = NULL;
     guint          i;
-    const guint32 *telit_3g_to_mm_band_mask;
+    const guint64 *telit_3g_to_mm_band_mask;
     guint          telit_3g_to_mm_band_mask_n_elements;
 
     initialize_telit_3g_to_mm_band_masks ();
diff --git a/plugins/tests/test-keyfiles.c b/plugins/tests/test-keyfiles.c
index c1c740c..18037f1 100644
--- a/plugins/tests/test-keyfiles.c
+++ b/plugins/tests/test-keyfiles.c
@@ -43,9 +43,9 @@
 /************************************************************/
 
 static void
-test_dell_dw5821e (void)
+test_foxconn_t77w968 (void)
 {
-    common_test (TESTKEYFILE_DELL_DW5821E);
+    common_test (TESTKEYFILE_FOXCONN_T77W968);
 }
 
 /************************************************************/
@@ -76,7 +76,7 @@
 
     g_test_init (&argc, &argv, NULL);
 
-    g_test_add_func ("/MM/test-keyfiles/dell/dw5821e", test_dell_dw5821e);
+    g_test_add_func ("/MM/test-keyfiles/foxconn/t77w968", test_foxconn_t77w968);
 
     return g_test_run ();
 }
diff --git a/po/tr.po b/po/tr.po
index 85ce8ef..fd34123 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,14 +1,14 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Emin Tufan Çetin <etcetin@gmail.com>, 2018.
+# Turkish translation for ModemManager.
+# Copyright (C) 2017-2019 the ModemManager authors.
+# This file is distributed under the same license as the ModemManager package.
+# Emin Tufan Çetin <etcetin@gmail.com>, 2018, 2019.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: ModemManager master\n"
 "Report-Msgid-Bugs-To: modemmanager-devel@lists.freedesktop.org\n"
-"POT-Creation-Date: 2019-09-25 12:48+0200\n"
-"PO-Revision-Date: 2018-06-23 18:53+0300\n"
+"POT-Creation-Date: 2019-11-11 10:01+0100\n"
+"PO-Revision-Date: 2019-11-10 09:05+0300\n"
 "Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
 "Language-Team: Türkçe <gnome-turk@gnome.org>\n"
 "Language: tr\n"
@@ -45,7 +45,7 @@
 msgid ""
 "System policy prevents adding, modifying, or deleting this device's contacts."
 msgstr ""
-"Sistem ilkesi bu aygıtın kişilerini eklemeyi, düzenlemeyi veya silmeyi "
+"Sistem ilkesi bu aygıtın kişi eklemesini, düzenlemesini veya silmesini "
 "engelliyor."
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:40
@@ -56,7 +56,7 @@
 msgid ""
 "System policy prevents sending or manipulating this device's text messages."
 msgstr ""
-"Sistem ilkesi bu aygıtın metin iletilerini göndermeyi veya işlemeyi "
+"Sistem ilkesi bu aygıtın metin iletiler göndermesini veya işlemesini "
 "engelliyor."
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:49
@@ -69,14 +69,11 @@
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:58
 msgid "Query network time and timezone information"
-msgstr ""
+msgstr "Ağ zaman ve saat dilimi bilgisini sorgula"
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:59
-#, fuzzy
 msgid "System policy prevents querying network time information."
-msgstr ""
-"Sistem ilkesi ağ bilgisini ve hizmetleri sorgulamayı veya yararlanmayı "
-"engelliyor."
+msgstr "Sistem ilkesi ağ zaman bilgisini sorgulamayı engelliyor."
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:67
 msgid "Enable and view geographic location and positioning information"
diff --git a/po/uk.po b/po/uk.po
index f1412e0..0be8149 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2,22 +2,22 @@
 # Copyright (C) 2013 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Modem Manager package.
 #
-# Yuri Chornoivan <yurchor@ukr.net>, 2013, 2017.
+# Yuri Chornoivan <yurchor@ukr.net>, 2013, 2017, 2019.
 msgid ""
 msgstr ""
 "Project-Id-Version: Modem Manager\n"
 "Report-Msgid-Bugs-To: modemmanager-devel@lists.freedesktop.org\n"
-"POT-Creation-Date: 2019-09-25 12:48+0200\n"
-"PO-Revision-Date: 2017-11-11 18:33+0200\n"
+"POT-Creation-Date: 2019-11-11 10:09+0100\n"
+"PO-Revision-Date: 2019-11-10 14:35+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 19.11.70\n"
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:13
 msgid "Control the Modem Manager daemon"
@@ -73,14 +73,11 @@
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:58
 msgid "Query network time and timezone information"
-msgstr ""
+msgstr "Надсилання запиту щодо часу і часового поясу мережі"
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:59
-#, fuzzy
 msgid "System policy prevents querying network time information."
-msgstr ""
-"Правила системи забороняють надсилання запитів і використання даних щодо "
-"мережі і служб."
+msgstr "Правила системи забороняють надсилання запитів щодо часу мережі."
 
 #: data/org.freedesktop.ModemManager1.policy.in.in:67
 msgid "Enable and view geographic location and positioning information"
diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c
index 893c470..1e29c3c 100644
--- a/src/mm-iface-modem-simple.c
+++ b/src/mm-iface-modem-simple.c
@@ -41,7 +41,7 @@
 static void
 private_free (Private *priv)
 {
-    g_assert (!priv->ongoing_connect);
+    g_clear_object (&priv->ongoing_connect);
     g_slice_free (Private, priv);
 }
 
diff --git a/src/mm-plugin-manager.c b/src/mm-plugin-manager.c
index f0045af..b46b3a6 100644
--- a/src/mm-plugin-manager.c
+++ b/src/mm-plugin-manager.c
@@ -812,6 +812,15 @@
 {
     GTask *task;
 
+    /* If the context is completed before the minimum probing time, we need to wait
+     * until that happens, so that we give enough time to udev/hotplug to report the
+     * new port additions. */
+    if (device_context->min_probing_time_id) {
+        mm_dbg ("[plugin manager] task %s: all port probings completed, but not reached min probing time yet",
+                device_context->name);
+        return;
+    }
+
     /* Steal the task from the context */
     g_assert (device_context->task);
     task = device_context->task;
@@ -831,15 +840,8 @@
         device_context->released_id = 0;
     }
 
-    /* Remove timeouts, if still around */
-    if (device_context->min_wait_time_id) {
-        g_source_remove (device_context->min_wait_time_id);
-        device_context->min_wait_time_id = 0;
-    }
-    if (device_context->min_probing_time_id) {
-        g_source_remove (device_context->min_probing_time_id);
-        device_context->min_probing_time_id = 0;
-    }
+    /* On completion, the minimum wait time must have been already elapsed */
+    g_assert (!device_context->min_wait_time_id);
 
     /* Task completion */
     if (!device_context->best_plugin)
@@ -1256,6 +1258,16 @@
         g_list_foreach (device_context->port_contexts, (GFunc) port_context_cancel, NULL);
     }
 
+    /* Cancel all timeouts */
+    if (device_context->min_wait_time_id) {
+        g_source_remove (device_context->min_wait_time_id);
+        device_context->min_wait_time_id = 0;
+    }
+    if (device_context->min_probing_time_id) {
+        g_source_remove (device_context->min_probing_time_id);
+        device_context->min_probing_time_id = 0;
+    }
+
     /* Wakeup the device context logic. If we were still waiting for the
      * min probing time, this will complete the device context. */
     device_context_continue (device_context);
diff --git a/test/Makefile.am b/test/Makefile.am
index 20e2a06..ba737bc 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -87,8 +87,8 @@
 
 mmsmspdu_LDADD = \
 	$(MM_LIBS) \
-	$(top_builddir)/libmm-glib/libmm-glib.la \
 	$(top_builddir)/src/libhelpers.la \
+	$(top_builddir)/libmm-glib/libmm-glib.la \
 	$(NULL)
 
 ################################################################################
@@ -112,8 +112,8 @@
 
 mmsmsmonitor_LDADD = \
 	$(MM_LIBS) \
-	$(top_builddir)/libmm-glib/libmm-glib.la \
 	$(top_builddir)/src/libhelpers.la \
+	$(top_builddir)/libmm-glib/libmm-glib.la \
 	$(NULL)
 
 ################################################################################