[evolution-ews] Fix new compiler warnings introduced by GLib minimum version bump



commit 6e849e2fb43950ab219d1e9258f20bb68efb9071
Author: Milan Crha <mcrha redhat com>
Date:   Thu Nov 12 14:59:39 2020 +0100

    Fix new compiler warnings introduced by GLib minimum version bump

 src/EWS/addressbook/e-book-backend-ews.c           |   6 +-
 src/EWS/addressbook/ews-oab-decoder.c              | 142 +++++++------------
 src/EWS/addressbook/ews-oab-decoder.h              |   2 +
 src/EWS/calendar/e-cal-backend-ews.c               |   6 +-
 src/EWS/camel/camel-ews-folder.c                   |  10 +-
 src/EWS/camel/camel-ews-message-info.c             |   6 +-
 src/EWS/camel/camel-ews-search.c                   |  27 +---
 src/EWS/camel/camel-ews-store-summary.c            |   6 +-
 src/EWS/camel/camel-ews-store.c                    |  21 +--
 src/EWS/camel/camel-ews-summary.c                  |   6 +-
 src/EWS/camel/camel-ews-transport.c                |   8 +-
 src/EWS/common/camel-ews-settings.c                |  47 +++---
 src/EWS/common/e-ews-connection.c                  |  36 ++---
 src/EWS/common/e-ews-folder.c                      |   8 +-
 src/EWS/common/e-ews-item.c                        |   8 +-
 src/EWS/common/e-ews-notification.c                |  34 ++---
 src/EWS/common/e-ews-oof-settings.c                |  45 ++----
 src/EWS/common/e-oauth2-service-office365.c        |   5 +-
 src/EWS/common/e-soap-message.c                    | 142 +++++++++----------
 src/EWS/common/e-soap-response.c                   |  20 +--
 src/EWS/common/e-source-ews-folder.c               |  25 +---
 src/EWS/evolution/e-ews-ooo-notificator.c          |  14 +-
 src/EWS/evolution/e-mail-config-ews-autodiscover.c |  27 +---
 src/EWS/evolution/e-mail-config-ews-backend.c      | 157 ++++++++++-----------
 .../evolution/e-mail-config-ews-delegates-page.c   |  96 +++++--------
 .../e-mail-config-ews-folder-sizes-page.c          |  24 +---
 src/EWS/evolution/e-mail-config-ews-gal.c          |  14 +-
 .../evolution/e-mail-config-ews-oal-combo-box.c    |  36 ++---
 src/EWS/evolution/e-mail-config-ews-ooo-page.c     | 108 ++++++--------
 .../evolution/e-mail-part-ews-sharing-metadata.c   |   2 +-
 src/EWS/registry/e-ews-backend.c                   |  58 +++-----
 31 files changed, 430 insertions(+), 716 deletions(-)
---
diff --git a/src/EWS/addressbook/e-book-backend-ews.c b/src/EWS/addressbook/e-book-backend-ews.c
index 197d49fd..8eae6a39 100644
--- a/src/EWS/addressbook/e-book-backend-ews.c
+++ b/src/EWS/addressbook/e-book-backend-ews.c
@@ -89,7 +89,7 @@ struct _EBookBackendEwsPrivate {
        gchar *attachments_dir;
 };
 
-G_DEFINE_TYPE (EBookBackendEws, e_book_backend_ews, E_TYPE_BOOK_META_BACKEND)
+G_DEFINE_TYPE_WITH_PRIVATE (EBookBackendEws, e_book_backend_ews, E_TYPE_BOOK_META_BACKEND)
 
 static void
 ebb_ews_remove_x_attribute (EContact *contact,
@@ -4075,7 +4075,7 @@ e_book_backend_ews_finalize (GObject *object)
 static void
 e_book_backend_ews_init (EBookBackendEws *bbews)
 {
-       bbews->priv = G_TYPE_INSTANCE_GET_PRIVATE (bbews, E_TYPE_BOOK_BACKEND_EWS, EBookBackendEwsPrivate);
+       bbews->priv = e_book_backend_ews_get_instance_private (bbews);
 
        g_rec_mutex_init (&bbews->priv->cnc_lock);
 }
@@ -4088,8 +4088,6 @@ e_book_backend_ews_class_init (EBookBackendEwsClass *klass)
        EBookBackendClass *book_backend_class;
        EBookMetaBackendClass *book_meta_backend_class;
 
-       g_type_class_add_private (klass, sizeof (EBookBackendEwsPrivate));
-
        book_meta_backend_class = E_BOOK_META_BACKEND_CLASS (klass);
        book_meta_backend_class->backend_module_filename = "libebookbackendews.so";
        book_meta_backend_class->backend_factory_type_name = "EBookBackendEwsFactory";
diff --git a/src/EWS/addressbook/ews-oab-decoder.c b/src/EWS/addressbook/ews-oab-decoder.c
index cc734019..e0f3f646 100644
--- a/src/EWS/addressbook/ews-oab-decoder.c
+++ b/src/EWS/addressbook/ews-oab-decoder.c
@@ -18,18 +18,11 @@
 #include "ews-oab-decoder.h"
 #include "ews-oab-props.h"
 
-G_DEFINE_TYPE (EwsOabDecoder, ews_oab_decoder, G_TYPE_OBJECT)
-
 #define d(x)
 
-#define GET_PRIVATE(o) \
-  (G_TYPE_INSTANCE_GET_PRIVATE ((o), EWS_TYPE_OAB_DECODER, EwsOabDecoderPrivate))
-
 #define EOD_ERROR \
        (ews_oab_decoder_error_quark ())
 
-typedef struct _EwsOabDecoderPrivate EwsOabDecoderPrivate;
-
 struct _EwsOabDecoderPrivate {
        gchar *cache_dir;
        GInputStream *fis;
@@ -41,6 +34,8 @@ struct _EwsOabDecoderPrivate {
        GHashTable *prop_index_dict;
 };
 
+G_DEFINE_TYPE_WITH_PRIVATE (EwsOabDecoder, ews_oab_decoder, G_TYPE_OBJECT)
+
 /* The of properties which will be accumulated and later set in EContact */
 typedef struct {
        EContactAddress *addr;
@@ -162,7 +157,6 @@ ews_populate_photo (EContact *contact,
                     gpointer user_data)
 {
        EwsOabDecoder *eod = EWS_OAB_DECODER (user_data);
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        const gchar *at;
        GBytes *bytes = value;
        gchar *email;
@@ -184,7 +178,7 @@ ews_populate_photo (EContact *contact,
        name = g_strndup (email, at - email);
 
        pic_name = g_strconcat (name, ".jpg", NULL);
-       filename = g_build_filename (priv->cache_dir, pic_name, NULL);
+       filename = g_build_filename (eod->priv->cache_dir, pic_name, NULL);
 
        success = g_file_set_contents (filename, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), 
&local_error);
 
@@ -249,32 +243,13 @@ static const struct prop_field_mapping {
 static void
 ews_oab_decoder_finalize (GObject *object)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (object);
+       EwsOabDecoder *eod = EWS_OAB_DECODER (object);
 
-       if (priv->cache_dir) {
-               g_free (priv->cache_dir);
-               priv->cache_dir = NULL;
-       }
-
-       if (priv->fis) {
-               g_object_unref (priv->fis);
-               priv->fis = NULL;
-       }
-
-       if (priv->prop_index_dict) {
-               g_hash_table_destroy (priv->prop_index_dict);
-               priv->prop_index_dict = NULL;
-       }
-
-       if (priv->oab_props) {
-               g_slist_free (priv->oab_props);
-               priv->oab_props = NULL;
-       }
-
-       if (priv->hdr_props) {
-               g_slist_free (priv->hdr_props);
-               priv->hdr_props = NULL;
-       }
+       g_clear_pointer (&eod->priv->cache_dir, g_free);
+       g_clear_object (&eod->priv->fis);
+       g_clear_pointer (&eod->priv->prop_index_dict, g_hash_table_destroy);
+       g_clear_pointer (&eod->priv->oab_props, g_slist_free);
+       g_clear_pointer (&eod->priv->hdr_props, g_slist_free);
 
        G_OBJECT_CLASS (ews_oab_decoder_parent_class)->finalize (object);
 }
@@ -284,22 +259,19 @@ ews_oab_decoder_class_init (EwsOabDecoderClass *klass)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-       g_type_class_add_private (klass, sizeof (EwsOabDecoderPrivate));
-
        object_class->finalize = ews_oab_decoder_finalize;
 }
 
 static void
 ews_oab_decoder_init (EwsOabDecoder *self)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (self);
        gint i;
 
-       priv->cache_dir = NULL;
+       self->priv = ews_oab_decoder_get_instance_private (self);
 
-       priv->prop_index_dict = g_hash_table_new (g_direct_hash, g_direct_equal);
+       self->priv->prop_index_dict = g_hash_table_new (g_direct_hash, g_direct_equal);
        for (i = 1; i <= G_N_ELEMENTS (prop_map); i++)
-               g_hash_table_insert (priv->prop_index_dict, GINT_TO_POINTER (prop_map[i - 1].prop_id), 
GINT_TO_POINTER (i));
+               g_hash_table_insert (self->priv->prop_index_dict, GINT_TO_POINTER (prop_map[i - 1].prop_id), 
GINT_TO_POINTER (i));
 }
 
 EwsOabDecoder *
@@ -308,23 +280,21 @@ ews_oab_decoder_new (const gchar *oab_filename,
                      GError **error)
 {
        EwsOabDecoder *eod;
-       EwsOabDecoderPrivate *priv;
        GError *err = NULL;
        GFile *gf = NULL;
 
        eod = g_object_new (EWS_TYPE_OAB_DECODER, NULL);
-       priv = GET_PRIVATE (eod);
 
        gf = g_file_new_for_path (oab_filename);
-       priv->fis = (GInputStream *)g_file_read (gf, NULL, &err);
+       eod->priv->fis = (GInputStream *) g_file_read (gf, NULL, &err);
        if (err)
                goto exit;
 
-       priv->cache_dir = g_strdup (cache_dir);
+       eod->priv->cache_dir = g_strdup (cache_dir);
+
+ exit:
+       g_clear_object (&gf);
 
-exit:
-       if (gf)
-               g_object_unref (gf);
        if (err) {
                g_propagate_error (error, err);
                g_object_unref (eod);
@@ -484,12 +454,12 @@ exit:
 }
 
 static gboolean
-ews_decode_hdr_props (EwsOabDecoder *eod, GInputStream *stream,
-                      gboolean oab_hdrs,
-                      GCancellable *cancellable,
-                      GError **error)
+ews_decode_hdr_props (EwsOabDecoder *eod,
+                     GInputStream *stream,
+                     gboolean oab_hdrs,
+                     GCancellable *cancellable,
+                     GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        guint32 num_props, i;
        GSList **props;
 
@@ -500,9 +470,9 @@ ews_decode_hdr_props (EwsOabDecoder *eod, GInputStream *stream,
                return FALSE;
 
        if (oab_hdrs)
-               props = &priv->oab_props;
+               props = &eod->priv->oab_props;
        else
-               props = &priv->hdr_props;
+               props = &eod->priv->hdr_props;
 
        if (*props) {
                g_slist_free (*props);
@@ -881,13 +851,13 @@ ews_decode_addressbook_write_display_type (EContact **contact,
  * Returns: 
  **/
 static gboolean
-ews_decode_addressbook_record (EwsOabDecoder *eod, GInputStream *stream,
-                               EContact *contact,
-                               GSList *props,
-                               GCancellable *cancellable,
-                               GError **error)
+ews_decode_addressbook_record (EwsOabDecoder *eod,
+                              GInputStream *stream,
+                              EContact *contact,
+                              GSList *props,
+                              GCancellable *cancellable,
+                              GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        EwsDeferredSet *dset = NULL;
        guint bit_array_size, i, len;
        gchar *bit_str;
@@ -930,7 +900,7 @@ ews_decode_addressbook_record (EwsOabDecoder *eod, GInputStream *stream,
                        ews_decode_addressbook_write_display_type (&contact, GPOINTER_TO_UINT (val), TRUE);
 
                /* Check the contact map and store the data in EContact */
-               index = g_hash_table_lookup (priv->prop_index_dict, GINT_TO_POINTER (prop_id));
+               index = g_hash_table_lookup (eod->priv->prop_index_dict, GINT_TO_POINTER (prop_id));
                if (contact && index) {
                        gint i = GPOINTER_TO_INT (index);
 
@@ -978,7 +948,6 @@ ews_decode_and_store_oab_records (EwsOabDecoder *eod,
                                   GCancellable *cancellable,
                                   GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        gboolean ret = FALSE;
        guint32 i;
        int buf_len = 200;
@@ -990,17 +959,17 @@ ews_decode_and_store_oab_records (EwsOabDecoder *eod,
 
        /* eat the size */
        ews_oab_read_uint32 (
-               priv->fis,
+               eod->priv->fis,
                cancellable, error);
 
-       ews_decode_addressbook_record (eod, priv->fis, NULL,
-                                      priv->hdr_props, cancellable, error);
+       ews_decode_addressbook_record (eod, eod->priv->fis, NULL,
+                                      eod->priv->hdr_props, cancellable, error);
 
        if (*error)
                goto exit;
 
 
-       for (i = 0; i < priv->total_records; i++) {
+       for (i = 0; i < eod->priv->total_records; i++) {
                EContact *contact;
                goffset offset;
                guint32 rec_size;
@@ -1010,7 +979,7 @@ ews_decode_and_store_oab_records (EwsOabDecoder *eod,
                contact = e_contact_new ();
 
                /* eat the size */
-               rec_size = ews_oab_read_uint32 (priv->fis, cancellable, error);
+               rec_size = ews_oab_read_uint32 (eod->priv->fis, cancellable, error);
                if (rec_size < 4)
                        goto exit;
 
@@ -1024,8 +993,8 @@ ews_decode_and_store_oab_records (EwsOabDecoder *eod,
                                goto exit;
                }
                /* fetch the offset */
-               offset = g_seekable_tell ((GSeekable *) priv->fis);
-               if (g_input_stream_read (priv->fis, record_buf, rec_size, cancellable, error) != rec_size)
+               offset = g_seekable_tell ((GSeekable *) eod->priv->fis);
+               if (g_input_stream_read (eod->priv->fis, record_buf, rec_size, cancellable, error) != 
rec_size)
                        goto exit;
 
                g_checksum_reset (sum);
@@ -1036,10 +1005,10 @@ ews_decode_and_store_oab_records (EwsOabDecoder *eod,
 
                if ((!filter_cb || filter_cb (offset, sum_str, user_data, error)) &&
                    ews_decode_addressbook_record (eod, memstream,
-                                                  contact, priv->oab_props,
+                                                  contact, eod->priv->oab_props,
                                                   cancellable, error))
                        cb (contact, offset, sum_str,
-                           ((gfloat) (i + 1) / priv->total_records) * 100,
+                           ((gfloat) (i + 1) / eod->priv->total_records) * 100,
                            user_data, cancellable, error);
 
                g_object_unref (memstream);
@@ -1060,11 +1029,10 @@ gchar *
 ews_oab_decoder_get_oab_prop_string (EwsOabDecoder *eod,
                                      GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        GString *str = g_string_new (NULL);
        GSList *l;
 
-       if (!priv->oab_props) {
+       if (!eod->priv->oab_props) {
                g_set_error_literal (
                        error, EOD_ERROR, 1,
                        "Oab props not found");
@@ -1073,7 +1041,7 @@ ews_oab_decoder_get_oab_prop_string (EwsOabDecoder *eod,
 
        /* Ideally i would liked to store int as int instead of converting to
         * string, but sqlite db doesn't yet support storing keys as blob. */
-       for (l = priv->oab_props; l != NULL; l = g_slist_next (l)) {
+       for (l = eod->priv->oab_props; l != NULL; l = g_slist_next (l)) {
                guint32 prop_id = GPOINTER_TO_UINT (l->data);
                g_string_append_printf (str, "%"G_GUINT32_FORMAT, prop_id);
                g_string_append_c (str, ';');
@@ -1091,7 +1059,6 @@ ews_oab_decoder_set_oab_prop_string (EwsOabDecoder *eod,
                                      const gchar *prop_str,
                                      GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        gchar **vals;
        guint32 len, i;
 
@@ -1106,21 +1073,18 @@ ews_oab_decoder_set_oab_prop_string (EwsOabDecoder *eod,
                return FALSE;
        }
 
-       if (priv->oab_props) {
-               g_slist_free (priv->oab_props);
-               priv->oab_props = NULL;
-       }
+       g_clear_pointer (&eod->priv->oab_props, g_slist_free);
 
        for (i = 0; i < len; i++) {
                guint32 prop_id;
 
                sscanf (vals[i],"%"G_GUINT32_FORMAT,&prop_id);
-               priv->oab_props = g_slist_prepend (
-                       priv->oab_props, GUINT_TO_POINTER (prop_id));
+               eod->priv->oab_props = g_slist_prepend (
+                       eod->priv->oab_props, GUINT_TO_POINTER (prop_id));
                d (printf ("%X\n", prop_id);)
        }
 
-       priv->oab_props = g_slist_reverse (priv->oab_props);
+       eod->priv->oab_props = g_slist_reverse (eod->priv->oab_props);
 
        g_strfreev (vals);
 
@@ -1145,21 +1109,20 @@ ews_oab_decoder_decode (EwsOabDecoder *eod,
                         GCancellable *cancellable,
                         GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        GError *err = NULL;
        EwsOabHdr *o_hdr;
        gboolean ret = TRUE;
 
-       o_hdr = ews_read_oab_header (eod, priv->fis, cancellable, &err);
+       o_hdr = ews_read_oab_header (eod, eod->priv->fis, cancellable, &err);
        if (!o_hdr) {
                ret = FALSE;
                goto exit;
        }
 
-       priv->total_records = o_hdr->total_recs;
-       g_print ("Total records is %d \n", priv->total_records);
+       eod->priv->total_records = o_hdr->total_recs;
+       d (g_print ("Total records is %d \n", eod->priv->total_records));
 
-       ret = ews_decode_metadata (eod, priv->fis, cancellable, &err);
+       ret = ews_decode_metadata (eod, eod->priv->fis, cancellable, &err);
        if (!ret)
                goto exit;
 
@@ -1182,14 +1145,13 @@ ews_oab_decoder_get_contact_from_offset (EwsOabDecoder *eod,
                                          GCancellable *cancellable,
                                          GError **error)
 {
-       EwsOabDecoderPrivate *priv = GET_PRIVATE (eod);
        EContact *contact = NULL;
 
-       if (!g_seekable_seek ((GSeekable *) priv->fis, offset, G_SEEK_SET, cancellable, error))
+       if (!g_seekable_seek ((GSeekable *) eod->priv->fis, offset, G_SEEK_SET, cancellable, error))
                return NULL;
 
        contact = e_contact_new ();
-       if (!ews_decode_addressbook_record (eod, priv->fis,
+       if (!ews_decode_addressbook_record (eod, eod->priv->fis,
                                            contact, oab_props, cancellable,
                                            error)) {
                g_object_unref (contact);
diff --git a/src/EWS/addressbook/ews-oab-decoder.h b/src/EWS/addressbook/ews-oab-decoder.h
index f8e82a96..15c27154 100644
--- a/src/EWS/addressbook/ews-oab-decoder.h
+++ b/src/EWS/addressbook/ews-oab-decoder.h
@@ -33,9 +33,11 @@ G_BEGIN_DECLS
 
 typedef struct _EwsOabDecoder EwsOabDecoder;
 typedef struct _EwsOabDecoderClass EwsOabDecoderClass;
+typedef struct _EwsOabDecoderPrivate EwsOabDecoderPrivate;
 
 struct _EwsOabDecoder {
        GObject parent;
+       EwsOabDecoderPrivate *priv;
 };
 
 struct _EwsOabDecoderClass {
diff --git a/src/EWS/calendar/e-cal-backend-ews.c b/src/EWS/calendar/e-cal-backend-ews.c
index 4ebda28f..eab2d88b 100644
--- a/src/EWS/calendar/e-cal-backend-ews.c
+++ b/src/EWS/calendar/e-cal-backend-ews.c
@@ -113,7 +113,7 @@ struct _ECalBackendEwsPrivate {
                }                                                               \
        } G_STMT_END
 
-G_DEFINE_TYPE (ECalBackendEws, e_cal_backend_ews, E_TYPE_CAL_META_BACKEND)
+G_DEFINE_TYPE_WITH_PRIVATE (ECalBackendEws, e_cal_backend_ews, E_TYPE_CAL_META_BACKEND)
 
 static CamelEwsSettings *
 ecb_ews_get_collection_settings (ECalBackendEws *cbews)
@@ -4398,7 +4398,7 @@ ecb_ews_finalize (GObject *object)
 static void
 e_cal_backend_ews_init (ECalBackendEws *cbews)
 {
-       cbews->priv = G_TYPE_INSTANCE_GET_PRIVATE (cbews, E_TYPE_CAL_BACKEND_EWS, ECalBackendEwsPrivate);
+       cbews->priv = e_cal_backend_ews_get_instance_private (cbews);
 
        g_rec_mutex_init (&cbews->priv->cnc_lock);
 
@@ -4414,8 +4414,6 @@ e_cal_backend_ews_class_init (ECalBackendEwsClass *klass)
        ECalBackendSyncClass *cal_backend_sync_class;
        ECalMetaBackendClass *cal_meta_backend_class;
 
-       g_type_class_add_private (klass, sizeof (ECalBackendEwsPrivate));
-
        cal_meta_backend_class = E_CAL_META_BACKEND_CLASS (klass);
        cal_meta_backend_class->connect_sync = ecb_ews_connect_sync;
        cal_meta_backend_class->disconnect_sync = ecb_ews_disconnect_sync;
diff --git a/src/EWS/camel/camel-ews-folder.c b/src/EWS/camel/camel-ews-folder.c
index 1cc646e2..63caa7a2 100644
--- a/src/EWS/camel/camel-ews-folder.c
+++ b/src/EWS/camel/camel-ews-folder.c
@@ -55,10 +55,6 @@ which needs to be better organized via functions */
 
 #define SUMMARY_POSTITEM_PROPS ITEM_PROPS " " SUMMARY_ITEM_FLAGS " message:From message:Sender"
 
-#define CAMEL_EWS_FOLDER_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), CAMEL_TYPE_EWS_FOLDER, CamelEwsFolderPrivate))
-
 struct _CamelEwsFolderPrivate {
        GMutex search_lock;     /* for locking the search object */
        GRecMutex cache_lock;   /* for locking the cache object */
@@ -76,7 +72,7 @@ static gboolean ews_refresh_info_sync (CamelFolder *folder, GCancellable *cancel
 
 #define d(x)
 
-G_DEFINE_TYPE (CamelEwsFolder, camel_ews_folder, CAMEL_TYPE_OFFLINE_FOLDER)
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsFolder, camel_ews_folder, CAMEL_TYPE_OFFLINE_FOLDER)
 
 static GSList *
 ews_folder_get_summary_followup_mapi_flags (void)
@@ -3129,8 +3125,6 @@ camel_ews_folder_class_init (CamelEwsFolderClass *class)
        GObjectClass *object_class;
        CamelFolderClass *folder_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsFolderPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->dispose = ews_folder_dispose;
        object_class->finalize = ews_folder_finalize;
@@ -3159,7 +3153,7 @@ camel_ews_folder_init (CamelEwsFolder *ews_folder)
 {
        CamelFolder *folder = CAMEL_FOLDER (ews_folder);
 
-       ews_folder->priv = CAMEL_EWS_FOLDER_GET_PRIVATE (ews_folder);
+       ews_folder->priv = camel_ews_folder_get_instance_private (ews_folder);
 
        camel_folder_set_flags (folder, CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY);
 
diff --git a/src/EWS/camel/camel-ews-message-info.c b/src/EWS/camel/camel-ews-message-info.c
index 164bb443..3d48d9bb 100644
--- a/src/EWS/camel/camel-ews-message-info.c
+++ b/src/EWS/camel/camel-ews-message-info.c
@@ -28,7 +28,7 @@ enum {
        PROP_CHANGE_KEY,
 };
 
-G_DEFINE_TYPE (CamelEwsMessageInfo, camel_ews_message_info, CAMEL_TYPE_MESSAGE_INFO_BASE)
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsMessageInfo, camel_ews_message_info, CAMEL_TYPE_MESSAGE_INFO_BASE)
 
 static CamelMessageInfo *
 ews_message_info_clone (const CamelMessageInfo *mi,
@@ -184,8 +184,6 @@ camel_ews_message_info_class_init (CamelEwsMessageInfoClass *class)
        CamelMessageInfoClass *mi_class;
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsMessageInfoPrivate));
-
        mi_class = CAMEL_MESSAGE_INFO_CLASS (class);
        mi_class->clone = ews_message_info_clone;
        mi_class->load = ews_message_info_load;
@@ -251,7 +249,7 @@ camel_ews_message_info_class_init (CamelEwsMessageInfoClass *class)
 static void
 camel_ews_message_info_init (CamelEwsMessageInfo *emi)
 {
-       emi->priv = G_TYPE_INSTANCE_GET_PRIVATE (emi, CAMEL_TYPE_EWS_MESSAGE_INFO, 
CamelEwsMessageInfoPrivate);
+       emi->priv = camel_ews_message_info_get_instance_private (emi);
 }
 
 guint32
diff --git a/src/EWS/camel/camel-ews-search.c b/src/EWS/camel/camel-ews-search.c
index dae80f77..30d76cbf 100644
--- a/src/EWS/camel/camel-ews-search.c
+++ b/src/EWS/camel/camel-ews-search.c
@@ -16,10 +16,6 @@
 #include "camel-ews-folder.h"
 #include "camel-ews-search.h"
 
-#define CAMEL_EWS_SEARCH_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), CAMEL_TYPE_EWS_SEARCH, CamelEwsSearchPrivate))
-
 struct _CamelEwsSearchPrivate {
        GWeakRef ews_store;
        gint *local_data_search; /* not NULL, if testing whether all used headers are all locally available */
@@ -34,10 +30,7 @@ enum {
        PROP_STORE
 };
 
-G_DEFINE_TYPE (
-       CamelEwsSearch,
-       camel_ews_search,
-       CAMEL_TYPE_FOLDER_SEARCH)
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsSearch, camel_ews_search, CAMEL_TYPE_FOLDER_SEARCH)
 
 static void
 ews_search_set_property (GObject *object,
@@ -77,11 +70,9 @@ ews_search_get_property (GObject *object,
 static void
 ews_search_dispose (GObject *object)
 {
-       CamelEwsSearchPrivate *priv;
-
-       priv = CAMEL_EWS_SEARCH_GET_PRIVATE (object);
+       CamelEwsSearch *ews_search = CAMEL_EWS_SEARCH (object);
 
-       g_weak_ref_set (&priv->ews_store, NULL);
+       g_weak_ref_set (&ews_search->priv->ews_store, NULL);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (camel_ews_search_parent_class)->dispose (object);
@@ -90,12 +81,10 @@ ews_search_dispose (GObject *object)
 static void
 ews_search_finalize (GObject *object)
 {
-       CamelEwsSearchPrivate *priv;
+       CamelEwsSearch *ews_search = CAMEL_EWS_SEARCH (object);
 
-       priv = CAMEL_EWS_SEARCH_GET_PRIVATE (object);
-
-       g_weak_ref_clear (&priv->ews_store);
-       g_hash_table_destroy (priv->cached_results);
+       g_weak_ref_clear (&ews_search->priv->ews_store);
+       g_hash_table_destroy (ews_search->priv->cached_results);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_ews_search_parent_class)->finalize (object);
@@ -451,8 +440,6 @@ camel_ews_search_class_init (CamelEwsSearchClass *class)
        GObjectClass *object_class;
        CamelFolderSearchClass *search_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsSearchPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_search_set_property;
        object_class->get_property = ews_search_get_property;
@@ -477,7 +464,7 @@ camel_ews_search_class_init (CamelEwsSearchClass *class)
 static void
 camel_ews_search_init (CamelEwsSearch *search)
 {
-       search->priv = CAMEL_EWS_SEARCH_GET_PRIVATE (search);
+       search->priv = camel_ews_search_get_instance_private (search);
        search->priv->local_data_search = NULL;
        search->priv->cached_results = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, 
(GDestroyNotify) g_hash_table_destroy);
 
diff --git a/src/EWS/camel/camel-ews-store-summary.c b/src/EWS/camel/camel-ews-store-summary.c
index dd4cc55c..3041923e 100644
--- a/src/EWS/camel/camel-ews-store-summary.c
+++ b/src/EWS/camel/camel-ews-store-summary.c
@@ -35,7 +35,7 @@ struct _CamelEwsStoreSummaryPrivate {
        GFileMonitor *monitor_delete;
 };
 
-G_DEFINE_TYPE (CamelEwsStoreSummary, camel_ews_store_summary, CAMEL_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsStoreSummary, camel_ews_store_summary, CAMEL_TYPE_OBJECT)
 
 static void
 ews_store_summary_finalize (GObject *object)
@@ -60,8 +60,6 @@ camel_ews_store_summary_class_init (CamelEwsStoreSummaryClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsStoreSummaryPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->finalize = ews_store_summary_finalize;
 }
@@ -69,7 +67,7 @@ camel_ews_store_summary_class_init (CamelEwsStoreSummaryClass *class)
 static void
 camel_ews_store_summary_init (CamelEwsStoreSummary *ews_summary)
 {
-       ews_summary->priv = G_TYPE_INSTANCE_GET_PRIVATE (ews_summary, CAMEL_TYPE_EWS_STORE_SUMMARY, 
CamelEwsStoreSummaryPrivate);
+       ews_summary->priv = camel_ews_store_summary_get_instance_private (ews_summary);
 
        ews_summary->priv->key_file = g_key_file_new ();
        ews_summary->priv->dirty = FALSE;
diff --git a/src/EWS/camel/camel-ews-store.c b/src/EWS/camel/camel-ews-store.c
index 71a5b879..34240596 100644
--- a/src/EWS/camel/camel-ews-store.c
+++ b/src/EWS/camel/camel-ews-store.c
@@ -39,10 +39,6 @@
 #define d(x) x
 #define CURSOR_ITEM_LIMIT 100
 
-#define CAMEL_EWS_STORE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), CAMEL_TYPE_EWS_STORE, CamelEwsStorePrivate))
-
 #define FINFO_REFRESH_INTERVAL 60
 
 #define UPDATE_LOCK(x) (g_rec_mutex_lock(&(x)->priv->update_lock))
@@ -95,14 +91,11 @@ enum {
        PROP_HOST_REACHABLE
 };
 
-G_DEFINE_TYPE_WITH_CODE (
-       CamelEwsStore, camel_ews_store, CAMEL_TYPE_OFFLINE_STORE,
-       G_IMPLEMENT_INTERFACE (
-               G_TYPE_INITABLE, camel_ews_store_initable_init)
-       G_IMPLEMENT_INTERFACE (
-               CAMEL_TYPE_NETWORK_SERVICE, NULL)
-       G_IMPLEMENT_INTERFACE (
-               CAMEL_TYPE_SUBSCRIBABLE, camel_ews_subscribable_init))
+G_DEFINE_TYPE_WITH_CODE (CamelEwsStore, camel_ews_store, CAMEL_TYPE_OFFLINE_STORE,
+       G_ADD_PRIVATE (CamelEwsStore)
+       G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, camel_ews_store_initable_init)
+       G_IMPLEMENT_INTERFACE (CAMEL_TYPE_NETWORK_SERVICE, NULL)
+       G_IMPLEMENT_INTERFACE (CAMEL_TYPE_SUBSCRIBABLE, camel_ews_subscribable_init))
 
 static void
 ews_store_set_property (GObject *object,
@@ -4065,8 +4058,6 @@ camel_ews_store_class_init (CamelEwsStoreClass *class)
        CamelServiceClass *service_class;
        CamelStoreClass *store_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsStorePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_store_set_property;
        object_class->get_property = ews_store_get_property;
@@ -4142,7 +4133,7 @@ camel_ews_subscribable_init (CamelSubscribableInterface *iface)
 static void
 camel_ews_store_init (CamelEwsStore *ews_store)
 {
-       ews_store->priv = CAMEL_EWS_STORE_GET_PRIVATE (ews_store);
+       ews_store->priv = camel_ews_store_get_instance_private (ews_store);
 
        ews_store->priv->last_refresh_time = time (NULL) - (FINFO_REFRESH_INTERVAL + 10);
        ews_store->priv->updates_cancellable = NULL;
diff --git a/src/EWS/camel/camel-ews-summary.c b/src/EWS/camel/camel-ews-summary.c
index e1cf8233..07bb187e 100644
--- a/src/EWS/camel/camel-ews-summary.c
+++ b/src/EWS/camel/camel-ews-summary.c
@@ -33,7 +33,7 @@ struct _CamelEwsSummaryPrivate {
        gint32 version;
 };
 
-G_DEFINE_TYPE (CamelEwsSummary, camel_ews_summary, CAMEL_TYPE_FOLDER_SUMMARY)
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsSummary, camel_ews_summary, CAMEL_TYPE_FOLDER_SUMMARY)
 
 static void
 ews_summary_finalize (GObject *object)
@@ -53,8 +53,6 @@ camel_ews_summary_class_init (CamelEwsSummaryClass *class)
        CamelFolderSummaryClass *folder_summary_class;
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsSummaryPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->finalize = ews_summary_finalize;
 
@@ -67,7 +65,7 @@ camel_ews_summary_class_init (CamelEwsSummaryClass *class)
 static void
 camel_ews_summary_init (CamelEwsSummary *ews_summary)
 {
-       ews_summary->priv = G_TYPE_INSTANCE_GET_PRIVATE (ews_summary, CAMEL_TYPE_EWS_SUMMARY, 
CamelEwsSummaryPrivate);
+       ews_summary->priv = camel_ews_summary_get_instance_private (ews_summary);
 
        g_mutex_init (&ews_summary->priv->property_lock);
 }
diff --git a/src/EWS/camel/camel-ews-transport.c b/src/EWS/camel/camel-ews-transport.c
index 54f2984d..3c877f6d 100644
--- a/src/EWS/camel/camel-ews-transport.c
+++ b/src/EWS/camel/camel-ews-transport.c
@@ -23,14 +23,14 @@
 
 #define REPLY_VIEW "default message attachments threading"
 
-G_DEFINE_TYPE (CamelEwsTransport, camel_ews_transport, CAMEL_TYPE_TRANSPORT)
-
 struct _CamelEwsTransportPrivate
 {
        GMutex connection_lock;
        EEwsConnection *connection;
 };
 
+G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsTransport, camel_ews_transport, CAMEL_TYPE_TRANSPORT)
+
 static gboolean
 ews_transport_can_server_side_sent_folder (CamelService *service,
                                           EwsFolderId **folder_id,
@@ -436,8 +436,6 @@ camel_ews_transport_class_init (CamelEwsTransportClass *class)
        CamelServiceClass *service_class;
        CamelTransportClass *transport_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsTransportPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->dispose = ews_transport_dispose;
        object_class->finalize = ews_transport_finalize;
@@ -456,7 +454,7 @@ camel_ews_transport_class_init (CamelEwsTransportClass *class)
 static void
 camel_ews_transport_init (CamelEwsTransport *ews_transport)
 {
-       ews_transport->priv = G_TYPE_INSTANCE_GET_PRIVATE (ews_transport, CAMEL_TYPE_EWS_TRANSPORT, 
CamelEwsTransportPrivate);
+       ews_transport->priv = camel_ews_transport_get_instance_private (ews_transport);
 
        g_mutex_init (&ews_transport->priv->connection_lock);
 }
diff --git a/src/EWS/common/camel-ews-settings.c b/src/EWS/common/camel-ews-settings.c
index 35b7626a..61b4a22a 100644
--- a/src/EWS/common/camel-ews-settings.c
+++ b/src/EWS/common/camel-ews-settings.c
@@ -10,10 +10,6 @@
 
 #include <libedataserver/libedataserver.h>
 
-#define CAMEL_EWS_SETTINGS_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), CAMEL_TYPE_EWS_SETTINGS, CamelEwsSettingsPrivate))
-
 struct _CamelEwsSettingsPrivate {
        GMutex property_lock;
        gboolean check_all;
@@ -73,12 +69,9 @@ enum {
        PROP_CONCURRENT_CONNECTIONS
 };
 
-G_DEFINE_TYPE_WITH_CODE (
-       CamelEwsSettings,
-       camel_ews_settings,
-       CAMEL_TYPE_OFFLINE_SETTINGS,
-       G_IMPLEMENT_INTERFACE (
-               CAMEL_TYPE_NETWORK_SETTINGS, NULL))
+G_DEFINE_TYPE_WITH_CODE (CamelEwsSettings, camel_ews_settings, CAMEL_TYPE_OFFLINE_SETTINGS,
+       G_ADD_PRIVATE (CamelEwsSettings)
+       G_IMPLEMENT_INTERFACE (CAMEL_TYPE_NETWORK_SETTINGS, NULL))
 
 static gboolean
 ews_settings_transform_host_url_to_host_cb (GBinding *binding,
@@ -498,24 +491,22 @@ ews_settings_get_property (GObject *object,
 static void
 ews_settings_finalize (GObject *object)
 {
-       CamelEwsSettingsPrivate *priv;
-
-       priv = CAMEL_EWS_SETTINGS_GET_PRIVATE (object);
+       CamelEwsSettings *ews_settings = CAMEL_EWS_SETTINGS (object);
 
-       g_mutex_clear (&priv->property_lock);
+       g_mutex_clear (&ews_settings->priv->property_lock);
 
-       g_free (priv->email);
-       g_free (priv->gal_uid);
-       g_free (priv->hosturl);
-       g_free (priv->oaburl);
-       g_free (priv->oal_selected);
-       g_free (priv->impersonate_user);
-       g_free (priv->user_agent);
-       g_free (priv->oauth2_tenant);
-       g_free (priv->oauth2_client_id);
-       g_free (priv->oauth2_redirect_uri);
-       g_free (priv->oauth2_resource_uri);
-       g_free (priv->oauth2_endpoint_host);
+       g_free (ews_settings->priv->email);
+       g_free (ews_settings->priv->gal_uid);
+       g_free (ews_settings->priv->hosturl);
+       g_free (ews_settings->priv->oaburl);
+       g_free (ews_settings->priv->oal_selected);
+       g_free (ews_settings->priv->impersonate_user);
+       g_free (ews_settings->priv->user_agent);
+       g_free (ews_settings->priv->oauth2_tenant);
+       g_free (ews_settings->priv->oauth2_client_id);
+       g_free (ews_settings->priv->oauth2_redirect_uri);
+       g_free (ews_settings->priv->oauth2_resource_uri);
+       g_free (ews_settings->priv->oauth2_endpoint_host);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (camel_ews_settings_parent_class)->finalize (object);
@@ -526,8 +517,6 @@ camel_ews_settings_class_init (CamelEwsSettingsClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (CamelEwsSettingsPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_settings_set_property;
        object_class->get_property = ews_settings_get_property;
@@ -846,7 +835,7 @@ camel_ews_settings_class_init (CamelEwsSettingsClass *class)
 static void
 camel_ews_settings_init (CamelEwsSettings *settings)
 {
-       settings->priv = CAMEL_EWS_SETTINGS_GET_PRIVATE (settings);
+       settings->priv = camel_ews_settings_get_instance_private (settings);
        g_mutex_init (&settings->priv->property_lock);
 
        e_binding_bind_property_full (settings, "hosturl",
diff --git a/src/EWS/common/e-ews-connection.c b/src/EWS/common/e-ews-connection.c
index 464e2ad7..08b8381c 100644
--- a/src/EWS/common/e-ews-connection.c
+++ b/src/EWS/common/e-ews-connection.c
@@ -30,10 +30,6 @@
 
 #define d(x) x
 
-#define E_EWS_CONNECTION_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_EWS_CONNECTION, EEwsConnectionPrivate))
-
 /* A chunk size limit when moving items in chunks. */
 #define EWS_MOVE_ITEMS_CHUNK_SIZE 500
 
@@ -169,7 +165,7 @@ struct _EwsUrls {
        gpointer future2;
 };
 
-G_DEFINE_TYPE (EEwsConnection, e_ews_connection, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (EEwsConnection, e_ews_connection, G_TYPE_OBJECT)
 
 static guint
 ews_connection_get_concurrent_connections (EEwsConnection *cnc)
@@ -2102,23 +2098,21 @@ ews_connection_dispose (GObject *object)
 static void
 ews_connection_finalize (GObject *object)
 {
-       EEwsConnectionPrivate *priv;
-
-       priv = E_EWS_CONNECTION_GET_PRIVATE (object);
+       EEwsConnection *cnc = E_EWS_CONNECTION (object);
 
-       g_free (priv->uri);
-       g_free (priv->password);
-       g_free (priv->email);
-       g_free (priv->hash_key);
-       g_free (priv->impersonate_user);
-       g_free (priv->ssl_certificate_pem);
-       g_free (priv->last_subscription_id);
+       g_free (cnc->priv->uri);
+       g_free (cnc->priv->password);
+       g_free (cnc->priv->email);
+       g_free (cnc->priv->hash_key);
+       g_free (cnc->priv->impersonate_user);
+       g_free (cnc->priv->ssl_certificate_pem);
+       g_free (cnc->priv->last_subscription_id);
 
-       g_clear_object (&priv->bearer_auth);
+       g_clear_object (&cnc->priv->bearer_auth);
 
-       g_mutex_clear (&priv->property_lock);
-       g_rec_mutex_clear (&priv->queue_lock);
-       g_mutex_clear (&priv->notification_lock);
+       g_mutex_clear (&cnc->priv->property_lock);
+       g_rec_mutex_clear (&cnc->priv->queue_lock);
+       g_mutex_clear (&cnc->priv->notification_lock);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_ews_connection_parent_class)->finalize (object);
@@ -2129,8 +2123,6 @@ e_ews_connection_class_init (EEwsConnectionClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (EEwsConnectionPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_connection_set_property;
        object_class->get_property = ews_connection_get_property;
@@ -2237,7 +2229,7 @@ e_ews_connection_folders_list_free (gpointer data)
 static void
 e_ews_connection_init (EEwsConnection *cnc)
 {
-       cnc->priv = E_EWS_CONNECTION_GET_PRIVATE (cnc);
+       cnc->priv = e_ews_connection_get_instance_private (cnc);
 
        cnc->priv->soup_context = g_main_context_new ();
        cnc->priv->soup_loop = g_main_loop_new (cnc->priv->soup_context, FALSE);
diff --git a/src/EWS/common/e-ews-folder.c b/src/EWS/common/e-ews-folder.c
index 6ae7c496..0f90346e 100644
--- a/src/EWS/common/e-ews-folder.c
+++ b/src/EWS/common/e-ews-folder.c
@@ -16,8 +16,6 @@
 #include "e-source-ews-folder.h"
 #include "camel-ews-settings.h"
 
-G_DEFINE_TYPE (EEwsFolder, e_ews_folder, G_TYPE_OBJECT)
-
 struct _EEwsFolderPrivate {
        GError *error;
        gchar *name;
@@ -35,6 +33,8 @@ struct _EEwsFolderPrivate {
        gboolean is_hidden;
 };
 
+G_DEFINE_TYPE_WITH_PRIVATE (EEwsFolder, e_ews_folder, G_TYPE_OBJECT)
+
 static void
 e_ews_folder_dispose (GObject *object)
 {
@@ -82,8 +82,6 @@ e_ews_folder_class_init (EEwsFolderClass *klass)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-       g_type_class_add_private (klass, sizeof (EEwsFolderPrivate));
-
        object_class->dispose = e_ews_folder_dispose;
        object_class->finalize = e_ews_folder_finalize;
 }
@@ -91,7 +89,7 @@ e_ews_folder_class_init (EEwsFolderClass *klass)
 static void
 e_ews_folder_init (EEwsFolder *folder)
 {
-       folder->priv = G_TYPE_INSTANCE_GET_PRIVATE (folder, E_TYPE_EWS_FOLDER, EEwsFolderPrivate);
+       folder->priv = e_ews_folder_get_instance_private (folder);
        folder->priv->error = NULL;
        folder->priv->folder_type = E_EWS_FOLDER_TYPE_UNKNOWN;
        folder->priv->foreign = FALSE;
diff --git a/src/EWS/common/e-ews-item.c b/src/EWS/common/e-ews-item.c
index 73a82fd4..9484a9a7 100644
--- a/src/EWS/common/e-ews-item.c
+++ b/src/EWS/common/e-ews-item.c
@@ -21,8 +21,6 @@
 #include "e-ews-item.h"
 #include "e-ews-item-change.h"
 
-G_DEFINE_TYPE (EEwsItem, e_ews_item, G_TYPE_OBJECT)
-
 struct _EEwsContactFields {
        gchar *fileas;
        gchar *display_name;
@@ -152,6 +150,8 @@ struct _EEwsItemPrivate {
        struct _EEwsTaskFields *task_fields;
 };
 
+G_DEFINE_TYPE_WITH_PRIVATE (EEwsItem, e_ews_item, G_TYPE_OBJECT)
+
 static void    ews_item_free_attendee (EwsAttendee *attendee);
 static void    ews_free_contact_fields (struct _EEwsContactFields *con_fields);
 
@@ -266,15 +266,13 @@ e_ews_item_class_init (EEwsItemClass *klass)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-       g_type_class_add_private (klass, sizeof (EEwsItemPrivate));
-
        object_class->dispose = e_ews_item_dispose;
 }
 
 static void
 e_ews_item_init (EEwsItem *item)
 {
-       item->priv = G_TYPE_INSTANCE_GET_PRIVATE (item, E_TYPE_EWS_ITEM, EEwsItemPrivate);
+       item->priv = e_ews_item_get_instance_private (item);
 
        item->priv->item_type = E_EWS_ITEM_TYPE_UNKNOWN;
        item->priv->body_type = E_EWS_BODY_TYPE_ANY;
diff --git a/src/EWS/common/e-ews-notification.c b/src/EWS/common/e-ews-notification.c
index f2a986db..57656d91 100644
--- a/src/EWS/common/e-ews-notification.c
+++ b/src/EWS/common/e-ews-notification.c
@@ -13,12 +13,6 @@
 #include "e-ews-notification.h"
 #include "e-soup-auth-negotiate.h"
 
-#define E_EWS_NOTIFICATION_GET_PRIVATE(obj)\
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_EWS_NOTIFICATION, EEwsNotificationPrivate))
-
-G_DEFINE_TYPE (EEwsNotification, e_ews_notification, G_TYPE_OBJECT)
-
 struct _EEwsNotificationPrivate {
        SoupSession *soup_session;
        GWeakRef connection_wk;
@@ -27,6 +21,8 @@ struct _EEwsNotificationPrivate {
        gchar *last_subscription_id; /* guarded by the caller, because it can be set only after construct */
 };
 
+G_DEFINE_TYPE_WITH_PRIVATE (EEwsNotification, e_ews_notification, G_TYPE_OBJECT)
+
 enum {
        PROP_0,
        PROP_CONNECTION
@@ -175,24 +171,18 @@ ews_notification_constructed (GObject *object)
 static void
 ews_notification_dispose (GObject *object)
 {
-       EEwsNotificationPrivate *priv;
+       EEwsNotification *notif = E_EWS_NOTIFICATION (object);
 
-       priv = E_EWS_NOTIFICATION_GET_PRIVATE (object);
+       if (notif->priv->cancellable != NULL)
+               g_cancellable_cancel (notif->priv->cancellable);
 
-       if (priv->cancellable != NULL)
-               g_cancellable_cancel (priv->cancellable);
-
-       if (priv->soup_session != NULL) {
-               g_signal_handlers_disconnect_by_func (
-                       priv->soup_session,
-                       ews_notification_authenticate, object);
-               g_clear_object (&priv->soup_session);
+       if (notif->priv->soup_session != NULL) {
+               g_signal_handlers_disconnect_by_func (notif->priv->soup_session, 
ews_notification_authenticate, object);
+               g_clear_object (&notif->priv->soup_session);
        }
 
-       if (priv->cancellable != NULL)
-               g_clear_object (&priv->cancellable);
-
-       g_weak_ref_set (&priv->connection_wk, NULL);
+       g_clear_object (&notif->priv->cancellable);
+       g_weak_ref_set (&notif->priv->connection_wk, NULL);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_ews_notification_parent_class)->dispose (object);
@@ -217,8 +207,6 @@ e_ews_notification_class_init (EEwsNotificationClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (EEwsNotificationPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_notification_set_property;
        object_class->get_property = ews_notification_get_property;
@@ -253,7 +241,7 @@ e_ews_notification_init (EEwsNotification *notification)
 {
        gint log_level;
 
-       notification->priv = E_EWS_NOTIFICATION_GET_PRIVATE (notification);
+       notification->priv = e_ews_notification_get_instance_private (notification);
 
        g_weak_ref_init (&notification->priv->connection_wk, NULL);
 
diff --git a/src/EWS/common/e-ews-oof-settings.c b/src/EWS/common/e-ews-oof-settings.c
index 63c43151..634a7d9c 100644
--- a/src/EWS/common/e-ews-oof-settings.c
+++ b/src/EWS/common/e-ews-oof-settings.c
@@ -16,10 +16,6 @@
 #include "e-ews-enumtypes.h"
 #include "e-ews-message.h"
 
-#define E_EWS_OOF_SETTINGS_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_EWS_OOF_SETTINGS, EEwsOofSettingsPrivate))
-
 /* Forward Declarations */
 static void    e_ews_oof_settings_initable_init
                                        (GInitableIface *iface);
@@ -48,16 +44,10 @@ enum {
        PROP_STATE
 };
 
-G_DEFINE_TYPE_WITH_CODE (
-       EEwsOofSettings,
-       e_ews_oof_settings,
-       G_TYPE_OBJECT,
-       G_IMPLEMENT_INTERFACE (
-               G_TYPE_INITABLE,
-               e_ews_oof_settings_initable_init)
-       G_IMPLEMENT_INTERFACE (
-               G_TYPE_ASYNC_INITABLE,
-               e_ews_oof_settings_async_initable_init))
+G_DEFINE_TYPE_WITH_CODE (EEwsOofSettings, e_ews_oof_settings, G_TYPE_OBJECT,
+       G_ADD_PRIVATE (EEwsOofSettings)
+       G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, e_ews_oof_settings_initable_init)
+       G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, e_ews_oof_settings_async_initable_init))
 
 static GDateTime *
 ews_oof_settings_string_to_date_time (const gchar *string)
@@ -380,14 +370,9 @@ ews_oof_settings_get_property (GObject *object,
 static void
 ews_oof_settings_dispose (GObject *object)
 {
-       EEwsOofSettingsPrivate *priv;
-
-       priv = E_EWS_OOF_SETTINGS_GET_PRIVATE (object);
+       EEwsOofSettings *settings = E_EWS_OOF_SETTINGS (object);
 
-       if (priv->connection != NULL) {
-               g_object_unref (priv->connection);
-               priv->connection = NULL;
-       }
+       g_clear_object (&settings->priv->connection);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_ews_oof_settings_parent_class)->dispose (object);
@@ -396,17 +381,15 @@ ews_oof_settings_dispose (GObject *object)
 static void
 ews_oof_settings_finalize (GObject *object)
 {
-       EEwsOofSettingsPrivate *priv;
-
-       priv = E_EWS_OOF_SETTINGS_GET_PRIVATE (object);
+       EEwsOofSettings *settings = E_EWS_OOF_SETTINGS (object);
 
-       g_mutex_clear (&priv->property_lock);
+       g_mutex_clear (&settings->priv->property_lock);
 
-       g_date_time_unref (priv->start_time);
-       g_date_time_unref (priv->end_time);
+       g_date_time_unref (settings->priv->start_time);
+       g_date_time_unref (settings->priv->end_time);
 
-       g_free (priv->internal_reply);
-       g_free (priv->external_reply);
+       g_free (settings->priv->internal_reply);
+       g_free (settings->priv->external_reply);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_ews_oof_settings_parent_class)->finalize (object);
@@ -521,8 +504,6 @@ e_ews_oof_settings_class_init (EEwsOofSettingsClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (EEwsOofSettingsPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = ews_oof_settings_set_property;
        object_class->get_property = ews_oof_settings_get_property;
@@ -614,7 +595,7 @@ e_ews_oof_settings_class_init (EEwsOofSettingsClass *class)
 static void
 e_ews_oof_settings_init (EEwsOofSettings *settings)
 {
-       settings->priv = E_EWS_OOF_SETTINGS_GET_PRIVATE (settings);
+       settings->priv = e_ews_oof_settings_get_instance_private (settings);
 
        g_mutex_init (&settings->priv->property_lock);
 
diff --git a/src/EWS/common/e-oauth2-service-office365.c b/src/EWS/common/e-oauth2-service-office365.c
index 72e9b9cd..5cfd14bf 100644
--- a/src/EWS/common/e-oauth2-service-office365.c
+++ b/src/EWS/common/e-oauth2-service-office365.c
@@ -28,6 +28,7 @@ struct _EOAuth2ServiceOffice365Private
 static void e_oauth2_service_office365_oauth2_service_init (EOAuth2ServiceInterface *iface);
 
 G_DEFINE_DYNAMIC_TYPE_EXTENDED (EOAuth2ServiceOffice365, e_oauth2_service_office365, 
E_TYPE_OAUTH2_SERVICE_BASE, 0,
+       G_ADD_PRIVATE_DYNAMIC (EOAuth2ServiceOffice365)
        G_IMPLEMENT_INTERFACE_DYNAMIC (E_TYPE_OAUTH2_SERVICE, e_oauth2_service_office365_oauth2_service_init))
 
 static const gchar *
@@ -471,8 +472,6 @@ e_oauth2_service_office365_class_init (EOAuth2ServiceOffice365Class *klass)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (klass, sizeof (EOAuth2ServiceOffice365Private));
-
        object_class = G_OBJECT_CLASS (klass);
        object_class->finalize = eos_office365_finalize;
 }
@@ -485,7 +484,7 @@ e_oauth2_service_office365_class_finalize (EOAuth2ServiceOffice365Class *klass)
 static void
 e_oauth2_service_office365_init (EOAuth2ServiceOffice365 *oauth2_office365)
 {
-       oauth2_office365->priv = G_TYPE_INSTANCE_GET_PRIVATE (oauth2_office365, 
E_TYPE_OAUTH2_SERVICE_OFFICE365, EOAuth2ServiceOffice365Private);
+       oauth2_office365->priv = e_oauth2_service_office365_get_instance_private (oauth2_office365);
 
        g_mutex_init (&oauth2_office365->priv->string_cache_lock);
        oauth2_office365->priv->string_cache = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
diff --git a/src/EWS/common/e-soap-message.c b/src/EWS/common/e-soap-message.c
index 8d514d5b..7c0d4828 100644
--- a/src/EWS/common/e-soap-message.c
+++ b/src/EWS/common/e-soap-message.c
@@ -19,10 +19,6 @@
 #include "e-soap-message.h"
 #include "e-ews-debug.h"
 
-#define E_SOAP_MESSAGE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_SOAP_MESSAGE, ESoapMessagePrivate))
-
 struct _ESoapMessagePrivate {
        /* Serialization fields */
        xmlParserCtxtPtr ctxt;
@@ -51,38 +47,29 @@ struct _ESoapMessagePrivate {
        gpointer progress_data;
 };
 
-G_DEFINE_TYPE (ESoapMessage, e_soap_message, SOUP_TYPE_MESSAGE)
+G_DEFINE_TYPE_WITH_PRIVATE (ESoapMessage, e_soap_message, SOUP_TYPE_MESSAGE)
 
 static void
 soap_message_finalize (GObject *object)
 {
-       ESoapMessagePrivate *priv;
-
-       priv = E_SOAP_MESSAGE_GET_PRIVATE (object);
+       ESoapMessage *msg = E_SOAP_MESSAGE (object);
 
-       if (priv->ctxt != NULL) {
-               if (priv->ctxt->myDoc != NULL)
-                       xmlFreeDoc (priv->ctxt->myDoc);
-               xmlFreeParserCtxt (priv->ctxt);
+       if (msg->priv->ctxt) {
+               if (msg->priv->ctxt->myDoc)
+                       xmlFreeDoc (msg->priv->ctxt->myDoc);
+               xmlFreeParserCtxt (msg->priv->ctxt);
        }
 
-       if (priv->doc != NULL)
-               xmlFreeDoc (priv->doc);
-
-       if (priv->action != NULL)
-               g_free (priv->action);
-
-       if (priv->env_uri != NULL)
-               xmlFree (priv->env_uri);
+       g_clear_pointer (&msg->priv->doc, xmlFreeDoc);
+       g_clear_pointer (&msg->priv->action, g_free);
+       g_clear_pointer (&msg->priv->env_uri, xmlFree);
+       g_clear_pointer (&msg->priv->env_prefix, xmlFree);
 
-       if (priv->env_prefix != NULL)
-               xmlFree (priv->env_prefix);
+       g_free (msg->priv->steal_node);
+       g_free (msg->priv->steal_dir);
 
-       g_free (priv->steal_node);
-       g_free (priv->steal_dir);
-
-       if (priv->steal_fd != -1)
-               close (priv->steal_fd);
+       if (msg->priv->steal_fd != -1)
+               close (msg->priv->steal_fd);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_soap_message_parent_class)->finalize (object);
@@ -93,8 +80,6 @@ e_soap_message_class_init (ESoapMessageClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (ESoapMessagePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->finalize = soap_message_finalize;
 }
@@ -102,7 +87,7 @@ e_soap_message_class_init (ESoapMessageClass *class)
 static void
 e_soap_message_init (ESoapMessage *msg)
 {
-       msg->priv = E_SOAP_MESSAGE_GET_PRIVATE (msg);
+       msg->priv = e_soap_message_get_instance_private (msg);
 
        /* initialize XML structures */
        msg->priv->doc = xmlNewDoc ((const xmlChar *) "1.0");
@@ -120,21 +105,20 @@ fetch_ns (ESoapMessage *msg,
           const gchar *prefix,
           const gchar *ns_uri)
 {
-       ESoapMessagePrivate *priv = E_SOAP_MESSAGE_GET_PRIVATE (msg);
        xmlNsPtr ns = NULL;
 
        if (prefix && ns_uri)
                ns = xmlNewNs (
-                       priv->last_node,
+                       msg->priv->last_node,
                        (const xmlChar *) ns_uri,
                        (const xmlChar *) prefix);
        else if (prefix && !ns_uri) {
                ns = xmlSearchNs (
-                       priv->doc, priv->last_node,
+                       msg->priv->doc, msg->priv->last_node,
                        (const xmlChar *) prefix);
                if (!ns)
                        ns = xmlNewNs (
-                               priv->last_node,
+                               msg->priv->last_node,
                                (const xmlChar *) "",
                                (const xmlChar *) prefix);
        }
@@ -143,35 +127,35 @@ fetch_ns (ESoapMessage *msg,
 }
 
 static void
-soap_got_headers (SoupMessage *msg,
+soap_got_headers (SoupMessage *soup_msg,
                   gpointer data)
 {
-       ESoapMessagePrivate *priv = E_SOAP_MESSAGE_GET_PRIVATE (msg);
+       ESoapMessage *msg = E_SOAP_MESSAGE (soup_msg);
        const gchar *size;
 
        size = soup_message_headers_get_one (
-               msg->response_headers,
+               soup_msg->response_headers,
                "Content-Length");
 
        if (size)
-               priv->response_size = strtol (size, NULL, 10);
+               msg->priv->response_size = strtol (size, NULL, 10);
 }
 
 static void
-soap_restarted (SoupMessage *msg,
+soap_restarted (SoupMessage *soup_msg,
                 gpointer data)
 {
-       ESoapMessagePrivate *priv = E_SOAP_MESSAGE_GET_PRIVATE (msg);
+       ESoapMessage *msg = E_SOAP_MESSAGE (soup_msg);
 
-       priv->response_size = 0;
-       priv->response_received = 0;
+       msg->priv->response_size = 0;
+       msg->priv->response_received = 0;
 
        /* Discard the existing context, if there is one, and start again */
-       if (priv->ctxt) {
-               if (priv->ctxt->myDoc)
-                       xmlFreeDoc (priv->ctxt->myDoc);
-               xmlFreeParserCtxt (priv->ctxt);
-               priv->ctxt = NULL;
+       if (msg->priv->ctxt) {
+               if (msg->priv->ctxt->myDoc)
+                       xmlFreeDoc (msg->priv->ctxt->myDoc);
+               xmlFreeParserCtxt (msg->priv->ctxt);
+               msg->priv->ctxt = NULL;
        }
 }
 
@@ -187,7 +171,7 @@ soap_sax_startElementNs (gpointer _ctxt,
                          const xmlChar **attributes)
 {
        xmlParserCtxt *ctxt = _ctxt;
-       ESoapMessagePrivate *priv = ctxt->_private;
+       ESoapMessage *ews_msg = ctxt->_private;
        gchar *fname;
 
        xmlSAX2StartElementNs (
@@ -196,8 +180,8 @@ soap_sax_startElementNs (gpointer _ctxt,
                attributes);
 
        /* steal_node can contain multiple node name separated by " " */
-       if (priv->steal_node && *priv->steal_node) {
-               gchar **prop = g_strsplit (priv->steal_node, " ", 0);
+       if (ews_msg->priv->steal_node && *ews_msg->priv->steal_node) {
+               gchar **prop = g_strsplit (ews_msg->priv->steal_node, " ", 0);
                gint i = 0;
                gboolean isnode = FALSE;
 
@@ -214,10 +198,10 @@ soap_sax_startElementNs (gpointer _ctxt,
        } else
                return;
 
-       fname = g_build_filename (priv->steal_dir, "XXXXXX", NULL);
-       priv->steal_fd = g_mkstemp (fname);
-       if (priv->steal_fd != -1) {
-               if (priv->steal_base64) {
+       fname = g_build_filename (ews_msg->priv->steal_dir, "XXXXXX", NULL);
+       ews_msg->priv->steal_fd = g_mkstemp (fname);
+       if (ews_msg->priv->steal_fd != -1) {
+               if (ews_msg->priv->steal_base64) {
                        gchar *enc = g_base64_encode ((guchar *) fname, strlen (fname));
                        xmlSAX2Characters (ctxt, (xmlChar *) enc, strlen (enc));
                        g_free (enc);
@@ -238,11 +222,11 @@ soap_sax_endElementNs (gpointer _ctxt,
                        const xmlChar *uri)
 {
        xmlParserCtxt *ctxt = _ctxt;
-       ESoapMessagePrivate *priv = ctxt->_private;
+       ESoapMessage *ews_msg = ctxt->_private;
 
-       if (priv->steal_fd != -1) {
-               close (priv->steal_fd);
-               priv->steal_fd = -1;
+       if (ews_msg->priv->steal_fd != -1) {
+               close (ews_msg->priv->steal_fd);
+               ews_msg->priv->steal_fd = -1;
        }
        xmlSAX2EndElementNs (ctxt, localname, prefix, uri);
 }
@@ -253,12 +237,12 @@ soap_sax_characters (gpointer _ctxt,
                      gint len)
 {
        xmlParserCtxt *ctxt = _ctxt;
-       ESoapMessagePrivate *priv = ctxt->_private;
+       ESoapMessage *ews_msg = ctxt->_private;
 
-       if (priv->steal_fd == -1)
+       if (ews_msg->priv->steal_fd == -1)
                xmlSAX2Characters (ctxt, ch, len);
-       else if (!priv->steal_base64) {
-               if (write (priv->steal_fd, (const gchar *) ch, len) != len) {
+       else if (!ews_msg->priv->steal_base64) {
+               if (write (ews_msg->priv->steal_fd, (const gchar *) ch, len) != len) {
                write_err:
                        /* Handle error better */
                        g_warning ("Failed to write streaming data to file");
@@ -269,9 +253,9 @@ soap_sax_characters (gpointer _ctxt,
 
                blen = g_base64_decode_step (
                        (const gchar *) ch, len,
-                       bdata, &priv->steal_b64_state,
-                       &priv->steal_b64_save);
-               if (write (priv->steal_fd, (const gchar *) bdata, blen) != blen) {
+                       bdata, &ews_msg->priv->steal_b64_state,
+                       &ews_msg->priv->steal_b64_save);
+               if (write (ews_msg->priv->steal_fd, (const gchar *) bdata, blen) != blen) {
                        g_free (bdata);
                        goto write_err;
                }
@@ -280,30 +264,30 @@ soap_sax_characters (gpointer _ctxt,
 }
 
 static void
-soap_got_chunk (SoupMessage *msg,
+soap_got_chunk (SoupMessage *soup_msg,
                 SoupBuffer *chunk,
                 gpointer data)
 {
-       ESoapMessagePrivate *priv = E_SOAP_MESSAGE_GET_PRIVATE (msg);
+       ESoapMessage *msg = E_SOAP_MESSAGE (soup_msg);
 
-       priv->response_received += chunk->length;
+       msg->priv->response_received += chunk->length;
 
-       if (priv->response_size && priv->progress_fn) {
-               gint pc = priv->response_received * 100 / priv->response_size;
-               priv->progress_fn (priv->progress_data, pc);
+       if (msg->priv->response_size && msg->priv->progress_fn) {
+               gint pc = msg->priv->response_received * 100 / msg->priv->response_size;
+               msg->priv->progress_fn (msg->priv->progress_data, pc);
        }
 
-       if (!priv->ctxt) {
-               priv->ctxt = xmlCreatePushParserCtxt (
+       if (!msg->priv->ctxt) {
+               msg->priv->ctxt = xmlCreatePushParserCtxt (
                        NULL, msg, chunk->data,
                        chunk->length, NULL);
-               priv->ctxt->_private = priv;
-               priv->ctxt->sax->startElementNs = soap_sax_startElementNs;
-               priv->ctxt->sax->endElementNs = soap_sax_endElementNs;
-               priv->ctxt->sax->characters = soap_sax_characters;
+               msg->priv->ctxt->_private = msg;
+               msg->priv->ctxt->sax->startElementNs = soap_sax_startElementNs;
+               msg->priv->ctxt->sax->endElementNs = soap_sax_endElementNs;
+               msg->priv->ctxt->sax->characters = soap_sax_characters;
+       } else {
+               xmlParseChunk (msg->priv->ctxt, chunk->data, chunk->length, 0);
        }
-       else
-               xmlParseChunk (priv->ctxt, chunk->data, chunk->length, 0);
 }
 
 /**
diff --git a/src/EWS/common/e-soap-response.c b/src/EWS/common/e-soap-response.c
index 594cca7a..bbb7d6c2 100644
--- a/src/EWS/common/e-soap-response.c
+++ b/src/EWS/common/e-soap-response.c
@@ -14,10 +14,6 @@
 #include <libsoup/soup.h>
 #include "e-soap-response.h"
 
-#define E_SOAP_RESPONSE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_SOAP_RESPONSE, ESoapResponsePrivate))
-
 struct _ESoapResponsePrivate {
        /* the XML document */
        xmlDocPtr xmldoc;
@@ -28,7 +24,7 @@ struct _ESoapResponsePrivate {
        GList *parameters;
 };
 
-G_DEFINE_TYPE (ESoapResponse, e_soap_response, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (ESoapResponse, e_soap_response, G_TYPE_OBJECT)
 
 static xmlNode *
 soup_xml_real_node (xmlNode *node)
@@ -42,14 +38,10 @@ soup_xml_real_node (xmlNode *node)
 static void
 soap_response_finalize (GObject *object)
 {
-       ESoapResponsePrivate *priv;
-
-       priv = E_SOAP_RESPONSE_GET_PRIVATE (object);
+       ESoapResponse *resp = E_SOAP_RESPONSE (object);
 
-       if (priv->xmldoc != NULL)
-               xmlFreeDoc (priv->xmldoc);
-
-       g_list_free (priv->parameters);
+       g_clear_pointer (&resp->priv->xmldoc, xmlFreeDoc);
+       g_list_free (resp->priv->parameters);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_soap_response_parent_class)->finalize (object);
@@ -60,8 +52,6 @@ e_soap_response_class_init (ESoapResponseClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (ESoapResponsePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->finalize = soap_response_finalize;
 }
@@ -69,7 +59,7 @@ e_soap_response_class_init (ESoapResponseClass *class)
 static void
 e_soap_response_init (ESoapResponse *response)
 {
-       response->priv = E_SOAP_RESPONSE_GET_PRIVATE (response);
+       response->priv = e_soap_response_get_instance_private (response);
 
        response->priv->xmldoc = xmlNewDoc ((const xmlChar *)"1.0");
 }
diff --git a/src/EWS/common/e-source-ews-folder.c b/src/EWS/common/e-source-ews-folder.c
index c0ae0827..faf2aae9 100644
--- a/src/EWS/common/e-source-ews-folder.c
+++ b/src/EWS/common/e-source-ews-folder.c
@@ -8,10 +8,6 @@
 
 #include "e-source-ews-folder.h"
 
-#define E_SOURCE_EWS_FOLDER_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_SOURCE_EWS_FOLDER, ESourceEwsFolderPrivate))
-
 struct _ESourceEwsFolderPrivate {
        gchar *change_key;
        gchar *id;
@@ -41,10 +37,7 @@ enum {
        PROP_FETCH_GAL_PHOTOS
 };
 
-G_DEFINE_TYPE (
-       ESourceEwsFolder,
-       e_source_ews_folder,
-       E_TYPE_SOURCE_EXTENSION)
+G_DEFINE_TYPE_WITH_PRIVATE (ESourceEwsFolder, e_source_ews_folder, E_TYPE_SOURCE_EXTENSION)
 
 static void
 source_ews_folder_set_property (GObject *object,
@@ -214,14 +207,12 @@ source_ews_folder_get_property (GObject *object,
 static void
 source_ews_folder_finalize (GObject *object)
 {
-       ESourceEwsFolderPrivate *priv;
-
-       priv = E_SOURCE_EWS_FOLDER_GET_PRIVATE (object);
+       ESourceEwsFolder *extension = E_SOURCE_EWS_FOLDER (object);
 
-       g_free (priv->change_key);
-       g_free (priv->id);
-       g_free (priv->name);
-       g_free (priv->foreign_mail);
+       g_free (extension->priv->change_key);
+       g_free (extension->priv->id);
+       g_free (extension->priv->name);
+       g_free (extension->priv->foreign_mail);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_source_ews_folder_parent_class)->finalize (object);
@@ -233,8 +224,6 @@ e_source_ews_folder_class_init (ESourceEwsFolderClass *class)
        GObjectClass *object_class;
        ESourceExtensionClass *extension_class;
 
-       g_type_class_add_private (class, sizeof (ESourceEwsFolderPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = source_ews_folder_set_property;
        object_class->get_property = source_ews_folder_get_property;
@@ -391,7 +380,7 @@ e_source_ews_folder_class_init (ESourceEwsFolderClass *class)
 static void
 e_source_ews_folder_init (ESourceEwsFolder *extension)
 {
-       extension->priv = E_SOURCE_EWS_FOLDER_GET_PRIVATE (extension);
+       extension->priv = e_source_ews_folder_get_instance_private (extension);
 }
 
 void
diff --git a/src/EWS/evolution/e-ews-ooo-notificator.c b/src/EWS/evolution/e-ews-ooo-notificator.c
index 19a96bda..d039c72f 100644
--- a/src/EWS/evolution/e-ews-ooo-notificator.c
+++ b/src/EWS/evolution/e-ews-ooo-notificator.c
@@ -16,10 +16,6 @@
 #include <mail/e-mail-ui-session.h>
 #include <glib/gi18n-lib.h>
 
-#define E_EWS_OOO_NOTIFICATOR_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-        ((obj), E_TYPE_EWS_OOO_NOTIFICATOR, EEwsOooNotificatorPrivate))
-
 typedef gboolean (*EEwsOooNotificationDispatcherFunction) (gpointer data);
 
 struct _EEwsOooNotificatorPrivate {
@@ -35,10 +31,8 @@ typedef struct _EEwsOooNotificatorDispatcherData {
        guint timeout_id;
 } EEwsOooNotificatorDispatcherData;
 
-G_DEFINE_DYNAMIC_TYPE (
-       EEwsOooNotificator,
-       e_ews_ooo_notificator,
-       E_TYPE_EXTENSION)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EEwsOooNotificator, e_ews_ooo_notificator, E_TYPE_EXTENSION, 0,
+       G_ADD_PRIVATE_DYNAMIC (EEwsOooNotificator))
 
 /* Forward declarations */
 static void e_ews_ooo_notificator_has_ooo_set_cb (EEwsOooNotificator *extension,
@@ -350,7 +344,7 @@ e_ews_ooo_notificator_online_cb (EEwsOooNotificator* extension,
 static void
 e_ews_ooo_notificator_init (EEwsOooNotificator *extension)
 {
-       extension->priv = E_EWS_OOO_NOTIFICATOR_GET_PRIVATE (extension);
+       extension->priv = e_ews_ooo_notificator_get_instance_private (extension);
 
        extension->priv->alerts = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, 
g_object_unref);
 }
@@ -490,8 +484,6 @@ e_ews_ooo_notificator_class_init (EEwsOooNotificatorClass *class)
 
        extension_class = E_EXTENSION_CLASS (class);
        extension_class->extensible_type = E_TYPE_SHELL_VIEW;
-
-       g_type_class_add_private (class, sizeof (EEwsOooNotificatorPrivate));
 }
 
 static void
diff --git a/src/EWS/evolution/e-mail-config-ews-autodiscover.c 
b/src/EWS/evolution/e-mail-config-ews-autodiscover.c
index 00ea11e1..08ee9292 100644
--- a/src/EWS/evolution/e-mail-config-ews-autodiscover.c
+++ b/src/EWS/evolution/e-mail-config-ews-autodiscover.c
@@ -17,10 +17,6 @@
 #include "common/e-ews-connection.h"
 #include "common/e-ews-connection-utils.h"
 
-#define E_MAIL_CONFIG_EWS_AUTODISCOVER_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_AUTODISCOVER, EMailConfigEwsAutodiscoverPrivate))
-
 typedef struct _AsyncContext AsyncContext;
 
 struct _EMailConfigEwsAutodiscoverPrivate {
@@ -42,7 +38,8 @@ enum {
        PROP_BACKEND
 };
 
-G_DEFINE_DYNAMIC_TYPE (EMailConfigEwsAutodiscover, e_mail_config_ews_autodiscover, GTK_TYPE_BUTTON)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsAutodiscover, e_mail_config_ews_autodiscover, GTK_TYPE_BUTTON, 
0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsAutodiscover))
 
 static void
 async_context_free (gpointer ptr)
@@ -275,7 +272,7 @@ mail_config_ews_autodiscover_run (EMailConfigEwsAutodiscover *autodiscover)
        async_context->autodiscover = g_object_ref (autodiscover);
        async_context->activity = activity;  /* takes ownership */
        async_context->source = g_object_ref (source);
-       async_context->ews_settings = g_object_ref (settings);
+       async_context->ews_settings = CAMEL_EWS_SETTINGS (g_object_ref (settings));
        async_context->email_address = g_strdup (e_mail_config_service_page_get_email_address (page));
        async_context->certificate_pem = NULL;
        async_context->certificate_errors = 0;
@@ -346,18 +343,12 @@ mail_config_ews_autodiscover_get_property (GObject *object,
 static void
 mail_config_ews_autodiscover_dispose (GObject *object)
 {
-       EMailConfigEwsAutodiscoverPrivate *priv;
-
-       priv = E_MAIL_CONFIG_EWS_AUTODISCOVER_GET_PRIVATE (object);
+       EMailConfigEwsAutodiscover *autodiscover = E_MAIL_CONFIG_EWS_AUTODISCOVER (object);
 
-       if (priv->backend != NULL) {
-               g_object_unref (priv->backend);
-               priv->backend = NULL;
-       }
+       g_clear_object (&autodiscover->priv->backend);
 
        /* Chain up to parent's dispose() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_autodiscover_parent_class)->
-               dispose (object);
+       G_OBJECT_CLASS (e_mail_config_ews_autodiscover_parent_class)->dispose (object);
 }
 
 static void
@@ -389,9 +380,6 @@ e_mail_config_ews_autodiscover_class_init (EMailConfigEwsAutodiscoverClass *clas
        GObjectClass *object_class;
        GtkButtonClass *button_class;
 
-       g_type_class_add_private (
-               class, sizeof (EMailConfigEwsAutodiscoverPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = mail_config_ews_autodiscover_set_property;
        object_class->get_property = mail_config_ews_autodiscover_get_property;
@@ -421,8 +409,7 @@ e_mail_config_ews_autodiscover_class_finalize (EMailConfigEwsAutodiscoverClass *
 static void
 e_mail_config_ews_autodiscover_init (EMailConfigEwsAutodiscover *autodiscover)
 {
-       autodiscover->priv =
-               E_MAIL_CONFIG_EWS_AUTODISCOVER_GET_PRIVATE (autodiscover);
+       autodiscover->priv = e_mail_config_ews_autodiscover_get_instance_private (autodiscover);
 }
 
 void
diff --git a/src/EWS/evolution/e-mail-config-ews-backend.c b/src/EWS/evolution/e-mail-config-ews-backend.c
index 821a9764..929e4785 100644
--- a/src/EWS/evolution/e-mail-config-ews-backend.c
+++ b/src/EWS/evolution/e-mail-config-ews-backend.c
@@ -23,10 +23,6 @@
 #include "e-ews-config-utils.h"
 #include "e-ews-search-user.h"
 
-#define E_MAIL_CONFIG_EWS_BACKEND_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_BACKEND, EMailConfigEwsBackendPrivate))
-
 struct _EMailConfigEwsBackendPrivate {
        GtkWidget *user_entry;
        GtkWidget *host_entry;
@@ -43,10 +39,8 @@ struct _EMailConfigEwsBackendPrivate {
        GtkWidget *oauth2_endpoint_host_entry;
 };
 
-G_DEFINE_DYNAMIC_TYPE (
-       EMailConfigEwsBackend,
-       e_mail_config_ews_backend,
-       E_TYPE_MAIL_CONFIG_SERVICE_BACKEND)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsBackend, e_mail_config_ews_backend, 
E_TYPE_MAIL_CONFIG_SERVICE_BACKEND, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsBackend))
 
 static ESource *
 mail_config_ews_backend_new_collection (EMailConfigServiceBackend *backend)
@@ -79,7 +73,7 @@ static void
 search_for_impersonate_user_clicked_cb (GtkButton *button,
                                        EMailConfigServiceBackend *backend)
 {
-       EMailConfigEwsBackendPrivate *priv;
+       EMailConfigEwsBackend *ews_backend;
        ESource *source;
        CamelSettings *settings;
        EEwsConnection *conn;
@@ -92,13 +86,13 @@ search_for_impersonate_user_clicked_cb (GtkButton *button,
        if (!source)
                source = e_mail_config_service_backend_get_source (backend);
 
-       priv = E_MAIL_CONFIG_EWS_BACKEND_GET_PRIVATE (backend);
+       ews_backend = E_MAIL_CONFIG_EWS_BACKEND (backend);
        settings = e_mail_config_service_backend_get_settings (backend);
-       conn = e_ews_connection_new (source, gtk_entry_get_text (GTK_ENTRY (priv->host_entry)), 
CAMEL_EWS_SETTINGS (settings));
+       conn = e_ews_connection_new (source, gtk_entry_get_text (GTK_ENTRY (ews_backend->priv->host_entry)), 
CAMEL_EWS_SETTINGS (settings));
        parent = e_ews_config_utils_get_widget_toplevel_window (GTK_WIDGET (button));
 
        if (e_ews_search_user_modal (parent, conn, NULL, NULL, &email)) {
-               gtk_entry_set_text (GTK_ENTRY (priv->impersonate_user_entry), email);
+               gtk_entry_set_text (GTK_ENTRY (ews_backend->priv->impersonate_user_entry), email);
        }
 
        g_object_unref (conn);
@@ -139,7 +133,7 @@ static void
 mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
                                         GtkBox *parent)
 {
-       EMailConfigEwsBackendPrivate *priv;
+       EMailConfigEwsBackend *ews_backend;
        EMailConfigServicePage *page;
        ESource *source;
        ESourceExtension *extension;
@@ -157,7 +151,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        const gchar *text;
        gchar *markup;
 
-       priv = E_MAIL_CONFIG_EWS_BACKEND_GET_PRIVATE (backend);
+       ews_backend = E_MAIL_CONFIG_EWS_BACKEND (backend);
        page = e_mail_config_service_backend_get_page (backend);
 
        /* This backend serves double duty.  One instance holds the
@@ -201,7 +195,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
        gtk_grid_attach (GTK_GRID (container), widget, 1, 0, 2, 1);
-       priv->user_entry = widget;  /* do not reference */
+       ews_backend->priv->user_entry = widget;  /* do not reference */
        gtk_widget_show (widget);
 
        widget = gtk_label_new_with_mnemonic (_("_Host URL:"));
@@ -215,12 +209,12 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
        gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 1, 1);
-       priv->host_entry = widget;  /* do not reference */
+       ews_backend->priv->host_entry = widget;  /* do not reference */
        gtk_widget_show (widget);
 
        widget = e_mail_config_ews_autodiscover_new (backend);
        gtk_grid_attach (GTK_GRID (container), widget, 2, 1, 1, 1);
-       priv->url_button = widget;  /* do not reference */
+       ews_backend->priv->url_button = widget;  /* do not reference */
        gtk_widget_show (widget);
 
        widget = gtk_label_new_with_mnemonic (_("OAB U_RL:"));
@@ -234,7 +228,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
        gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 2, 1);
-       priv->oab_entry = widget;  /* do not reference */
+       ews_backend->priv->oab_entry = widget;  /* do not reference */
        gtk_widget_show (widget);
 
        widget = gtk_check_button_new_with_mnemonic (_("Open _Mailbox of other user"));
@@ -269,7 +263,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_grid_attach (GTK_GRID (container), widget, 1, 4, 1, 1);
        gtk_widget_show (widget);
-       priv->impersonate_user_entry = widget;  /* do not reference */
+       ews_backend->priv->impersonate_user_entry = widget;  /* do not reference */
 
        e_binding_bind_object_text_property (
                settings, "impersonate-user",
@@ -286,7 +280,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        gtk_widget_show (widget);
 
        e_binding_bind_property (
-               priv->impersonate_user_entry, "sensitive",
+               ews_backend->priv->impersonate_user_entry, "sensitive",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -305,23 +299,23 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = e_mail_config_auth_check_new (backend);
        gtk_widget_set_margin_left (widget, 12);
        gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0);
-       priv->auth_check = widget;  /* do not reference */
+       ews_backend->priv->auth_check = widget;  /* do not reference */
        gtk_widget_show (widget);
 
        widget = gtk_grid_new ();
        gtk_widget_set_margin_left (widget, 12);
        gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0);
-       priv->oauth2_settings_grid = GTK_GRID (widget);
+       ews_backend->priv->oauth2_settings_grid = GTK_GRID (widget);
 
-       gtk_grid_set_column_spacing (priv->oauth2_settings_grid, 4);
-       gtk_grid_set_row_spacing (priv->oauth2_settings_grid, 4);
+       gtk_grid_set_column_spacing (ews_backend->priv->oauth2_settings_grid, 4);
+       gtk_grid_set_row_spacing (ews_backend->priv->oauth2_settings_grid, 4);
 
        container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-       gtk_grid_attach (priv->oauth2_settings_grid, container, 0, 0, 2, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, container, 0, 0, 2, 1);
 
        widget = gtk_check_button_new_with_mnemonic (_("_Override Office365 OAuth2 settings"));
        gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
-       priv->oauth2_override_check = widget;
+       ews_backend->priv->oauth2_override_check = widget;
 
        markup = g_markup_printf_escaped ("(<a 
href=\"https://wiki.gnome.org/Apps/Evolution/EWS/OAuth2\";>%s</a>)", _("Help…"));
        widget = gtk_label_new (markup);
@@ -333,22 +327,22 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = gtk_label_new_with_mnemonic (_("Application I_D:"));
        gtk_widget_set_margin_left (widget, 12);
        gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 0, 1, 1, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 0, 1, 1, 1);
        label = GTK_LABEL (widget);
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
        widget = gtk_entry_new ();
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 1, 1, 1, 1);
-       priv->oauth2_client_id_entry = widget;
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 1, 1, 1, 1);
+       ews_backend->priv->oauth2_client_id_entry = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -361,22 +355,22 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = gtk_label_new_with_mnemonic (_("_Tenant ID:"));
        gtk_widget_set_margin_left (widget, 12);
        gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 0, 2, 1, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 0, 2, 1, 1);
        label = GTK_LABEL (widget);
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
        widget = gtk_entry_new ();
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 1, 2, 1, 1);
-       priv->oauth2_tenant_entry = widget;
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 1, 2, 1, 1);
+       ews_backend->priv->oauth2_tenant_entry = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -389,7 +383,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
                g_strdup_printf (_("Default tenant ID is “%s”"), OFFICE365_TENANT));
 
        container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-       gtk_grid_attach (priv->oauth2_settings_grid, container, 0, 3, 2, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, container, 0, 3, 2, 1);
 
        widget = gtk_expander_new_with_mnemonic (_("_Advanced Settings"));
        gtk_widget_set_margin_left (widget, 12);
@@ -397,7 +391,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        expander = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -412,23 +406,23 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = gtk_label_new_with_mnemonic (_("_Endpoint host:"));
        gtk_widget_set_margin_left (widget, 12);
        gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 0, 4, 1, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 0, 4, 1, 1);
        label = GTK_LABEL (widget);
        endpoint_host_label = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
        widget = gtk_entry_new ();
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 1, 4, 1, 1);
-       priv->oauth2_endpoint_host_entry = widget;
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 1, 4, 1, 1);
+       ews_backend->priv->oauth2_endpoint_host_entry = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -441,23 +435,23 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = gtk_label_new_with_mnemonic (_("Red_irect URI:"));
        gtk_widget_set_margin_left (widget, 12);
        gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 0, 5, 1, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 0, 5, 1, 1);
        label = GTK_LABEL (widget);
        redirect_uri_label = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
        widget = gtk_entry_new ();
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 1, 5, 1, 1);
-       priv->oauth2_redirect_uri_entry = widget;
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 1, 5, 1, 1);
+       ews_backend->priv->oauth2_redirect_uri_entry = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -470,23 +464,23 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
        widget = gtk_label_new_with_mnemonic (_("Re_source URI:"));
        gtk_widget_set_margin_left (widget, 12);
        gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 0, 6, 1, 1);
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 0, 6, 1, 1);
        label = GTK_LABEL (widget);
        resource_uri_label = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
        widget = gtk_entry_new ();
        gtk_widget_set_hexpand (widget, TRUE);
        gtk_label_set_mnemonic_widget (label, widget);
-       gtk_grid_attach (priv->oauth2_settings_grid, widget, 1, 6, 1, 1);
-       priv->oauth2_resource_uri_entry = widget;
+       gtk_grid_attach (ews_backend->priv->oauth2_settings_grid, widget, 1, 6, 1, 1);
+       ews_backend->priv->oauth2_resource_uri_entry = widget;
 
        e_binding_bind_property (
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                widget, "sensitive",
                G_BINDING_SYNC_CREATE);
 
@@ -496,7 +490,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
                NULL);
        g_free (markup);
 
-       gtk_widget_show_all (GTK_WIDGET (priv->oauth2_settings_grid));
+       gtk_widget_show_all (GTK_WIDGET (ews_backend->priv->oauth2_settings_grid));
 
        camel_ews_settings_lock (ews_settings);
 
@@ -519,7 +513,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
 
        e_binding_bind_property (
                expander, "expanded",
-               priv->oauth2_endpoint_host_entry, "visible",
+               ews_backend->priv->oauth2_endpoint_host_entry, "visible",
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_property (
@@ -529,7 +523,7 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
 
        e_binding_bind_property (
                expander, "expanded",
-               priv->oauth2_redirect_uri_entry, "visible",
+               ews_backend->priv->oauth2_redirect_uri_entry, "visible",
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_property (
@@ -539,31 +533,31 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
 
        e_binding_bind_property (
                expander, "expanded",
-               priv->oauth2_resource_uri_entry, "visible",
+               ews_backend->priv->oauth2_resource_uri_entry, "visible",
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_property_full (
-               priv->auth_check, "active-mechanism",
-               priv->oauth2_settings_grid, "visible",
+               ews_backend->priv->auth_check, "active-mechanism",
+               ews_backend->priv->oauth2_settings_grid, "visible",
                G_BINDING_SYNC_CREATE,
                mail_config_ews_backend_auth_mech_is_oauth2,
                NULL, NULL, NULL);
 
        e_binding_bind_object_text_property (
                settings, "user",
-               priv->user_entry, "text",
+               ews_backend->priv->user_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "hosturl",
-               priv->host_entry, "text",
+               ews_backend->priv->host_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oaburl",
-               priv->oab_entry, "text",
+               ews_backend->priv->oab_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
@@ -572,42 +566,42 @@ mail_config_ews_backend_insert_widgets (EMailConfigServiceBackend *backend,
         * a simple property binding would. */
        e_binding_bind_property (
                settings, "auth-mechanism",
-               priv->auth_check, "active-mechanism",
+               ews_backend->priv->auth_check, "active-mechanism",
                G_BINDING_BIDIRECTIONAL);
 
        e_binding_bind_property (
                settings, "override-oauth2",
-               priv->oauth2_override_check, "active",
+               ews_backend->priv->oauth2_override_check, "active",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oauth2-tenant",
-               priv->oauth2_tenant_entry, "text",
+               ews_backend->priv->oauth2_tenant_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oauth2-client-id",
-               priv->oauth2_client_id_entry, "text",
+               ews_backend->priv->oauth2_client_id_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oauth2-redirect-uri",
-               priv->oauth2_redirect_uri_entry, "text",
+               ews_backend->priv->oauth2_redirect_uri_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oauth2-resource-uri",
-               priv->oauth2_resource_uri_entry, "text",
+               ews_backend->priv->oauth2_resource_uri_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
        e_binding_bind_object_text_property (
                settings, "oauth2-endpoint-host",
-               priv->oauth2_endpoint_host_entry, "text",
+               ews_backend->priv->oauth2_endpoint_host_entry, "text",
                G_BINDING_BIDIRECTIONAL |
                G_BINDING_SYNC_CREATE);
 
@@ -691,7 +685,7 @@ static gboolean
 mail_config_ews_backend_check_complete (EMailConfigServiceBackend *backend)
 {
        EMailConfigServicePage *page;
-       EMailConfigEwsBackendPrivate *priv;
+       EMailConfigEwsBackend *ews_backend;
        CamelSettings *settings;
        CamelEwsSettings *ews_settings;
        CamelNetworkSettings *network_settings;
@@ -699,7 +693,7 @@ mail_config_ews_backend_check_complete (EMailConfigServiceBackend *backend)
        const gchar *user;
        gboolean correct, complete = TRUE;
 
-       priv = E_MAIL_CONFIG_EWS_BACKEND_GET_PRIVATE (backend);
+       ews_backend = E_MAIL_CONFIG_EWS_BACKEND (backend);
        page = e_mail_config_service_backend_get_page (backend);
 
        /* This backend serves double duty.  One instance holds the
@@ -733,13 +727,13 @@ mail_config_ews_backend_check_complete (EMailConfigServiceBackend *backend)
                suri = soup_uri_new (hosturl);
                if (suri) {
                        soup_uri_free (suri);
-                       e_util_set_entry_issue_hint (priv->host_entry, NULL);
+                       e_util_set_entry_issue_hint (ews_backend->priv->host_entry, NULL);
                } else {
-                       e_util_set_entry_issue_hint (priv->host_entry, _("Host URL is not valid"));
+                       e_util_set_entry_issue_hint (ews_backend->priv->host_entry, _("Host URL is not 
valid"));
                        complete = FALSE;
                }
        } else {
-               e_util_set_entry_issue_hint (priv->host_entry, _("Host URL cannot be empty"));
+               e_util_set_entry_issue_hint (ews_backend->priv->host_entry, _("Host URL cannot be empty"));
        }
 
        if (oaburl && *oaburl) {
@@ -748,19 +742,19 @@ mail_config_ews_backend_check_complete (EMailConfigServiceBackend *backend)
                suri = soup_uri_new (oaburl);
                if (suri) {
                        soup_uri_free (suri);
-                       e_util_set_entry_issue_hint (priv->oab_entry, NULL);
+                       e_util_set_entry_issue_hint (ews_backend->priv->oab_entry, NULL);
                } else {
-                       e_util_set_entry_issue_hint (priv->oab_entry, _("OAB URL is not valid"));
+                       e_util_set_entry_issue_hint (ews_backend->priv->oab_entry, _("OAB URL is not valid"));
                        complete = FALSE;
                }
        } else {
-               e_util_set_entry_issue_hint (priv->oab_entry, NULL);
+               e_util_set_entry_issue_hint (ews_backend->priv->oab_entry, NULL);
        }
 
        correct = user != NULL && *user != '\0';
        complete = complete && correct;
 
-       e_util_set_entry_issue_hint (priv->user_entry, correct ? NULL : _("User name cannot be empty"));
+       e_util_set_entry_issue_hint (ews_backend->priv->user_entry, correct ? NULL : _("User name cannot be 
empty"));
 
        if (correct && camel_ews_settings_get_auth_mechanism (ews_settings) == EWS_AUTH_TYPE_OAUTH2) {
                const gchar *client_id;
@@ -774,7 +768,7 @@ mail_config_ews_backend_check_complete (EMailConfigServiceBackend *backend)
                correct = e_util_strcmp0 (client_id, NULL) != 0;
                complete = complete && correct;
 
-               e_util_set_entry_issue_hint (priv->oauth2_client_id_entry, correct ? NULL : _("Application ID 
cannot be empty"));
+               e_util_set_entry_issue_hint (ews_backend->priv->oauth2_client_id_entry, correct ? NULL : 
_("Application ID cannot be empty"));
        }
 
        camel_ews_settings_unlock (ews_settings);
@@ -816,9 +810,6 @@ e_mail_config_ews_backend_class_init (EMailConfigEwsBackendClass *class)
 {
        EMailConfigServiceBackendClass *backend_class;
 
-       g_type_class_add_private (
-               class, sizeof (EMailConfigEwsBackendPrivate));
-
        backend_class = E_MAIL_CONFIG_SERVICE_BACKEND_CLASS (class);
        backend_class->backend_name = "ews";
        backend_class->new_collection = mail_config_ews_backend_new_collection;
@@ -837,7 +828,7 @@ e_mail_config_ews_backend_class_finalize (EMailConfigEwsBackendClass *class)
 static void
 e_mail_config_ews_backend_init (EMailConfigEwsBackend *backend)
 {
-       backend->priv = E_MAIL_CONFIG_EWS_BACKEND_GET_PRIVATE (backend);
+       backend->priv = e_mail_config_ews_backend_get_instance_private (backend);
 }
 
 void
diff --git a/src/EWS/evolution/e-mail-config-ews-delegates-page.c 
b/src/EWS/evolution/e-mail-config-ews-delegates-page.c
index e95e29c8..8352624c 100644
--- a/src/EWS/evolution/e-mail-config-ews-delegates-page.c
+++ b/src/EWS/evolution/e-mail-config-ews-delegates-page.c
@@ -25,10 +25,6 @@
 #include "e-ews-search-user.h"
 #include "e-mail-config-ews-delegates-page.h"
 
-#define E_MAIL_CONFIG_EWS_DELEGATES_PAGE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_DELEGATES_PAGE, EMailConfigEwsDelegatesPagePrivate))
-
 typedef struct _AsyncContext AsyncContext;
 
 struct _EMailConfigEwsDelegatesPagePrivate {
@@ -81,14 +77,9 @@ static gboolean      page_contains_user      (EMailConfigEwsDelegatesPage *page,
                                         const gchar *primary_smtp,
                                         GtkTreeIter *piter);
 
-G_DEFINE_DYNAMIC_TYPE_EXTENDED (
-       EMailConfigEwsDelegatesPage,
-       e_mail_config_ews_delegates_page,
-       E_TYPE_MAIL_CONFIG_ACTIVITY_PAGE,
-       0,
-       G_IMPLEMENT_INTERFACE_DYNAMIC (
-               E_TYPE_MAIL_CONFIG_PAGE,
-               e_mail_config_ews_delegates_page_interface_init))
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsDelegatesPage, e_mail_config_ews_delegates_page, 
E_TYPE_MAIL_CONFIG_ACTIVITY_PAGE, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsDelegatesPage)
+       G_IMPLEMENT_INTERFACE_DYNAMIC (E_TYPE_MAIL_CONFIG_PAGE, 
e_mail_config_ews_delegates_page_interface_init))
 
 static void
 async_context_free (gpointer ptr)
@@ -335,44 +326,38 @@ mail_config_ews_delegates_page_get_property (GObject *object,
 static void
 mail_config_ews_delegates_page_dispose (GObject *object)
 {
-       EMailConfigEwsDelegatesPagePrivate *priv;
-
-       priv = E_MAIL_CONFIG_EWS_DELEGATES_PAGE_GET_PRIVATE (object);
+       EMailConfigEwsDelegatesPage *page = E_MAIL_CONFIG_EWS_DELEGATES_PAGE (object);
 
-       if (priv->refresh_cancellable) {
-               g_cancellable_cancel (priv->refresh_cancellable);
-               g_clear_object (&priv->refresh_cancellable);
+       if (page->priv->refresh_cancellable) {
+               g_cancellable_cancel (page->priv->refresh_cancellable);
+               g_clear_object (&page->priv->refresh_cancellable);
        }
 
-       g_clear_object (&priv->registry);
-       g_clear_object (&priv->account_source);
-       g_clear_object (&priv->collection_source);
-       g_clear_object (&priv->identity_source);
-       g_clear_object (&priv->connection);
+       g_clear_object (&page->priv->registry);
+       g_clear_object (&page->priv->account_source);
+       g_clear_object (&page->priv->collection_source);
+       g_clear_object (&page->priv->identity_source);
+       g_clear_object (&page->priv->connection);
 
-       g_slist_free_full (priv->orig_delegates, (GDestroyNotify) ews_delegate_info_free);
-       priv->orig_delegates = NULL;
+       g_slist_free_full (page->priv->orig_delegates, (GDestroyNotify) ews_delegate_info_free);
+       page->priv->orig_delegates = NULL;
 
-       g_slist_free_full (priv->new_delegates, (GDestroyNotify) ews_delegate_info_free);
-       priv->new_delegates = NULL;
+       g_slist_free_full (page->priv->new_delegates, (GDestroyNotify) ews_delegate_info_free);
+       page->priv->new_delegates = NULL;
 
        /* Chain up to parent's dispose() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_delegates_page_parent_class)->
-               dispose (object);
+       G_OBJECT_CLASS (e_mail_config_ews_delegates_page_parent_class)->dispose (object);
 }
 
 static void
 mail_config_ews_delegates_page_finalize (GObject *object)
 {
-       EMailConfigEwsDelegatesPagePrivate *priv;
-
-       priv = E_MAIL_CONFIG_EWS_DELEGATES_PAGE_GET_PRIVATE (object);
+       EMailConfigEwsDelegatesPage *page = E_MAIL_CONFIG_EWS_DELEGATES_PAGE (object);
 
-       g_mutex_clear (&priv->delegates_lock);
+       g_mutex_clear (&page->priv->delegates_lock);
 
        /* Chain up to parent's finalize() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_delegates_page_parent_class)->
-               finalize (object);
+       G_OBJECT_CLASS (e_mail_config_ews_delegates_page_parent_class)->finalize (object);
 }
 
 static void
@@ -1260,7 +1245,7 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
                                        GAsyncReadyCallback callback,
                                        gpointer user_data)
 {
-       EMailConfigEwsDelegatesPagePrivate *priv;
+       EMailConfigEwsDelegatesPage *ews_page;
        GSimpleAsyncResult *simple;
        EwsDelegateDeliver deliver_to;
        GSList *added = NULL, *updated = NULL, *removed = NULL, *iter;
@@ -1268,12 +1253,12 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
        GHashTableIter titer;
        gpointer key, value;
 
-       priv = E_MAIL_CONFIG_EWS_DELEGATES_PAGE_GET_PRIVATE (page);
+       ews_page = E_MAIL_CONFIG_EWS_DELEGATES_PAGE (page);
 
-       g_mutex_lock (&priv->delegates_lock);
+       g_mutex_lock (&ews_page->priv->delegates_lock);
 
-       if (!priv->connection) {
-               g_mutex_unlock (&priv->delegates_lock);
+       if (!ews_page->priv->connection) {
+               g_mutex_unlock (&ews_page->priv->delegates_lock);
 
                simple = g_simple_async_result_new (
                        G_OBJECT (page), callback, user_data,
@@ -1285,7 +1270,7 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
        }
 
        oldies = g_hash_table_new (g_str_hash, g_str_equal);
-       for (iter = priv->orig_delegates; iter; iter = iter->next) {
+       for (iter = ews_page->priv->orig_delegates; iter; iter = g_slist_next (iter)) {
                EwsDelegateInfo *di = iter->data;
 
                if (!di) {
@@ -1296,7 +1281,7 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
                g_hash_table_insert (oldies, di->user_id->primary_smtp, di);
        }
 
-       for (iter = priv->new_delegates; iter; iter = iter->next) {
+       for (iter = ews_page->priv->new_delegates; iter; iter = g_slist_next (iter)) {
                EwsDelegateInfo *di = iter->data;
                EwsDelegateInfo *orig_di;
 
@@ -1324,18 +1309,18 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
 
        g_hash_table_destroy (oldies);
 
-       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->deliver_copy_me_radio)))
+       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ews_page->priv->deliver_copy_me_radio)))
                deliver_to = EwsDelegateDeliver_DelegatesAndSendInformationToMe;
-       else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->deliver_delegates_only_radio)))
+       else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(ews_page->priv->deliver_delegates_only_radio)))
                deliver_to = EwsDelegateDeliver_DelegatesOnly;
-       else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->deliver_delegates_and_me_radio)))
+       else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(ews_page->priv->deliver_delegates_and_me_radio)))
                deliver_to = EwsDelegateDeliver_DelegatesAndMe;
        else
                deliver_to = EwsDelegateDeliver_DelegatesAndSendInformationToMe;
 
-       if (deliver_to == priv->deliver_to && !added && !updated && !removed) {
+       if (deliver_to == ews_page->priv->deliver_to && !added && !updated && !removed) {
                /* nothing changed, bye bye */
-               g_mutex_unlock (&priv->delegates_lock);
+               g_mutex_unlock (&ews_page->priv->delegates_lock);
 
                simple = g_simple_async_result_new (
                        G_OBJECT (page), callback, user_data,
@@ -1357,25 +1342,25 @@ mail_config_ews_delegates_page_submit (EMailConfigPage *page,
        if (cancellable)
                g_object_set_data_full (G_OBJECT (simple), CANCELLABLE_KEY, g_object_ref (cancellable), 
g_object_unref);
 
-       if (deliver_to != priv->deliver_to || updated) {
+       if (deliver_to != ews_page->priv->deliver_to || updated) {
                e_ews_connection_update_delegate (
-                       priv->connection, G_PRIORITY_DEFAULT, NULL, deliver_to, updated,
+                       ews_page->priv->connection, G_PRIORITY_DEFAULT, NULL, deliver_to, updated,
                        cancellable, mail_config_ews_delegates_page_update_delegate_cb, g_object_ref 
(simple));
        } else if (removed) {
                e_ews_connection_remove_delegate (
-                       priv->connection, G_PRIORITY_DEFAULT, NULL, removed,
+                       ews_page->priv->connection, G_PRIORITY_DEFAULT, NULL, removed,
                        cancellable, mail_config_ews_delegates_page_remove_delegate_cb, g_object_ref 
(simple));
        } else {
                g_warn_if_fail (added != NULL);
 
                e_ews_connection_add_delegate (
-                       priv->connection, G_PRIORITY_DEFAULT, NULL, added,
+                       ews_page->priv->connection, G_PRIORITY_DEFAULT, NULL, added,
                        cancellable, mail_config_ews_delegates_page_add_delegate_cb, g_object_ref (simple));
        }
 
        g_object_unref (simple);
 
-       g_mutex_unlock (&priv->delegates_lock);
+       g_mutex_unlock (&ews_page->priv->delegates_lock);
 }
 
 static gboolean
@@ -1580,9 +1565,6 @@ e_mail_config_ews_delegates_page_class_init (EMailConfigEwsDelegatesPageClass *c
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (
-               class, sizeof (EMailConfigEwsDelegatesPagePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = mail_config_ews_delegates_page_set_property;
        object_class->get_property = mail_config_ews_delegates_page_get_property;
@@ -1652,7 +1634,7 @@ e_mail_config_ews_delegates_page_class_finalize (EMailConfigEwsDelegatesPageClas
 static void
 e_mail_config_ews_delegates_page_init (EMailConfigEwsDelegatesPage *page)
 {
-       page->priv = E_MAIL_CONFIG_EWS_DELEGATES_PAGE_GET_PRIVATE (page);
+       page->priv = e_mail_config_ews_delegates_page_get_instance_private (page);
 
        g_mutex_init (&page->priv->delegates_lock);
 }
@@ -1718,7 +1700,7 @@ e_mail_config_ews_delegates_page_refresh (EMailConfigEwsDelegatesPage *page)
        async_context->page = g_object_ref (page);
        async_context->activity = activity;  /* takes ownership */
        async_context->source = g_object_ref (source);
-       async_context->settings = g_object_ref (settings);
+       async_context->settings = G_OBJECT (g_object_ref (settings));
 
        /* Property changes can cause update of the UI, but this runs in a thread,
           thus freeze the notify till be back in UI thread */
diff --git a/src/EWS/evolution/e-mail-config-ews-folder-sizes-page.c 
b/src/EWS/evolution/e-mail-config-ews-folder-sizes-page.c
index 4bc5def2..0448a15a 100644
--- a/src/EWS/evolution/e-mail-config-ews-folder-sizes-page.c
+++ b/src/EWS/evolution/e-mail-config-ews-folder-sizes-page.c
@@ -17,10 +17,6 @@
 
 #include "e-mail-config-ews-folder-sizes-page.h"
 
-#define E_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE, EMailConfigEwsFolderSizesPagePrivate))
-
 #define E_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE_SORT_ORDER \
        (E_MAIL_CONFIG_SECURITY_PAGE_SORT_ORDER + 10)
 
@@ -38,6 +34,7 @@ enum {
 static void e_mail_config_ews_folder_sizes_page_interface_init (EMailConfigPageInterface *iface);
 
 G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsFolderSizesPage, e_mail_config_ews_folder_sizes_page, 
GTK_TYPE_SCROLLED_WINDOW, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsFolderSizesPage)
        G_IMPLEMENT_INTERFACE_DYNAMIC (E_TYPE_MAIL_CONFIG_PAGE, 
e_mail_config_ews_folder_sizes_page_interface_init))
 
 static void
@@ -141,19 +138,12 @@ mail_config_ews_folder_sizes_page_get_property (GObject *object,
 static void
 mail_config_ews_folder_sizes_page_dispose (GObject *object)
 {
-       EMailConfigEwsFolderSizesPagePrivate *priv;
+       EMailConfigEwsFolderSizesPage *ews_page;
 
-       priv = E_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE_GET_PRIVATE (object);
+       ews_page = E_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE (object);
 
-       if (priv->account_source != NULL) {
-               g_object_unref (priv->account_source);
-               priv->account_source = NULL;
-       }
-
-       if (priv->registry != NULL) {
-               g_object_unref (priv->registry);
-               priv->registry = NULL;
-       }
+       g_clear_object (&ews_page->priv->account_source);
+       g_clear_object (&ews_page->priv->registry);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_mail_config_ews_folder_sizes_page_parent_class)->dispose (object);
@@ -203,8 +193,6 @@ e_mail_config_ews_folder_sizes_page_class_init (EMailConfigEwsFolderSizesPageCla
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (class, sizeof (EMailConfigEwsFolderSizesPagePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = mail_config_ews_folder_sizes_page_set_property;
        object_class->get_property = mail_config_ews_folder_sizes_page_get_property;
@@ -249,7 +237,7 @@ e_mail_config_ews_folder_sizes_page_interface_init (EMailConfigPageInterface *if
 static void
 e_mail_config_ews_folder_sizes_page_init (EMailConfigEwsFolderSizesPage *page)
 {
-       page->priv = E_MAIL_CONFIG_EWS_FOLDER_SIZES_PAGE_GET_PRIVATE (page);
+       page->priv = e_mail_config_ews_folder_sizes_page_get_instance_private (page);
 }
 
 void
diff --git a/src/EWS/evolution/e-mail-config-ews-gal.c b/src/EWS/evolution/e-mail-config-ews-gal.c
index d9e32dc4..1c5b4652 100644
--- a/src/EWS/evolution/e-mail-config-ews-gal.c
+++ b/src/EWS/evolution/e-mail-config-ews-gal.c
@@ -16,10 +16,6 @@
 
 #include "e-mail-config-ews-oal-combo-box.h"
 
-#define E_MAIL_CONFIG_EWS_GAL_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_GAL, EMailConfigEwsGalPrivate))
-
 typedef struct _AsyncContext AsyncContext;
 
 struct _EMailConfigEwsGalPrivate {
@@ -33,10 +29,8 @@ struct _AsyncContext {
        EActivity *activity;
 };
 
-G_DEFINE_DYNAMIC_TYPE (
-       EMailConfigEwsGal,
-       e_mail_config_ews_gal,
-       E_TYPE_EXTENSION)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsGal, e_mail_config_ews_gal, E_TYPE_EXTENSION, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsGal))
 
 static void
 async_context_free (AsyncContext *async_context)
@@ -353,8 +347,6 @@ e_mail_config_ews_gal_class_init (EMailConfigEwsGalClass *class)
        GObjectClass *object_class;
        EExtensionClass *extension_class;
 
-       g_type_class_add_private (class, sizeof (EMailConfigEwsGalPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->constructed = mail_config_ews_gal_constructed;
 
@@ -370,7 +362,7 @@ e_mail_config_ews_gal_class_finalize (EMailConfigEwsGalClass *class)
 static void
 e_mail_config_ews_gal_init (EMailConfigEwsGal *extension)
 {
-       extension->priv = E_MAIL_CONFIG_EWS_GAL_GET_PRIVATE (extension);
+       extension->priv = e_mail_config_ews_gal_get_instance_private (extension);
 }
 
 void
diff --git a/src/EWS/evolution/e-mail-config-ews-oal-combo-box.c 
b/src/EWS/evolution/e-mail-config-ews-oal-combo-box.c
index 9c61787f..f2c2f3f4 100644
--- a/src/EWS/evolution/e-mail-config-ews-oal-combo-box.c
+++ b/src/EWS/evolution/e-mail-config-ews-oal-combo-box.c
@@ -14,10 +14,6 @@
 #include "e-ews-config-utils.h"
 #include "e-mail-config-ews-oal-combo-box.h"
 
-#define E_MAIL_CONFIG_EWS_OAL_COMBO_BOX_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_OAL_COMBO_BOX, EMailConfigEwsOalComboBoxPrivate))
-
 struct _EMailConfigEwsOalComboBoxPrivate {
        EMailConfigServiceBackend *backend;
 
@@ -34,7 +30,8 @@ enum {
        PROP_BACKEND
 };
 
-G_DEFINE_DYNAMIC_TYPE (EMailConfigEwsOalComboBox, e_mail_config_ews_oal_combo_box, GTK_TYPE_COMBO_BOX_TEXT)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsOalComboBox, e_mail_config_ews_oal_combo_box, 
GTK_TYPE_COMBO_BOX_TEXT, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsOalComboBox))
 
 typedef struct _AsyncContext {
        EMailConfigEwsOalComboBox *combo_box;
@@ -110,32 +107,23 @@ mail_config_ews_oal_combo_box_get_property (GObject *object,
 static void
 mail_config_ews_oal_combo_box_dispose (GObject *object)
 {
-       EMailConfigEwsOalComboBoxPrivate *priv;
-
-       priv = E_MAIL_CONFIG_EWS_OAL_COMBO_BOX_GET_PRIVATE (object);
+       EMailConfigEwsOalComboBox *ews_combo = E_MAIL_CONFIG_EWS_OAL_COMBO_BOX (object);
 
-       if (priv->backend != NULL) {
-               g_object_ref (priv->backend);
-               priv->backend = NULL;
-       }
+       g_clear_object (&ews_combo->priv->backend);
 
        /* Chain up to parent's dispose() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_oal_combo_box_parent_class)->
-               dispose (object);
+       G_OBJECT_CLASS (e_mail_config_ews_oal_combo_box_parent_class)->dispose (object);
 }
 
 static void
 mail_config_ews_oal_combo_box_finalize (GObject *object)
 {
-       EMailConfigEwsOalComboBoxPrivate *priv;
+       EMailConfigEwsOalComboBox *ews_combo = E_MAIL_CONFIG_EWS_OAL_COMBO_BOX (object);
 
-       priv = E_MAIL_CONFIG_EWS_OAL_COMBO_BOX_GET_PRIVATE (object);
-
-       g_mutex_clear (&priv->oal_items_lock);
+       g_mutex_clear (&ews_combo->priv->oal_items_lock);
 
        /* Chain up to parent's finalize() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_oal_combo_box_parent_class)->
-               finalize (object);
+       G_OBJECT_CLASS (e_mail_config_ews_oal_combo_box_parent_class)->finalize (object);
 }
 
 static void
@@ -143,9 +131,6 @@ e_mail_config_ews_oal_combo_box_class_init (EMailConfigEwsOalComboBoxClass *clas
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (
-               class, sizeof (EMailConfigEwsOalComboBoxPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = mail_config_ews_oal_combo_box_set_property;
        object_class->get_property = mail_config_ews_oal_combo_box_get_property;
@@ -172,8 +157,7 @@ e_mail_config_ews_oal_combo_box_class_finalize (EMailConfigEwsOalComboBoxClass *
 static void
 e_mail_config_ews_oal_combo_box_init (EMailConfigEwsOalComboBox *combo_box)
 {
-       combo_box->priv =
-               E_MAIL_CONFIG_EWS_OAL_COMBO_BOX_GET_PRIVATE (combo_box);
+       combo_box->priv = e_mail_config_ews_oal_combo_box_get_instance_private (combo_box);
 
        g_mutex_init (&combo_box->priv->oal_items_lock);
 }
@@ -327,7 +311,7 @@ e_mail_config_ews_oal_combo_box_update (EMailConfigEwsOalComboBox *combo_box,
        async_context->combo_box = g_object_ref (combo_box);
        async_context->simple = simple;  /* takes ownership */
        async_context->source = g_object_ref (source);
-       async_context->settings = g_object_ref (settings);
+       async_context->settings = G_OBJECT (g_object_ref (settings));
 
        /* Property changes can cause update of the UI, but this runs in a thread,
           thus freeze the notify till be back in UI thread */
diff --git a/src/EWS/evolution/e-mail-config-ews-ooo-page.c b/src/EWS/evolution/e-mail-config-ews-ooo-page.c
index 5cf74985..44fd525f 100644
--- a/src/EWS/evolution/e-mail-config-ews-ooo-page.c
+++ b/src/EWS/evolution/e-mail-config-ews-ooo-page.c
@@ -23,10 +23,6 @@
 
 #include "e-mail-config-ews-ooo-page.h"
 
-#define E_MAIL_CONFIG_EWS_OOO_PAGE_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_MAIL_CONFIG_EWS_OOO_PAGE, EMailConfigEwsOooPagePrivate))
-
 typedef struct _AsyncContext AsyncContext;
 
 struct _EMailConfigEwsOooPagePrivate {
@@ -74,14 +70,9 @@ enum {
 static void    e_mail_config_ews_ooo_page_interface_init
                                (EMailConfigPageInterface *iface);
 
-G_DEFINE_DYNAMIC_TYPE_EXTENDED (
-       EMailConfigEwsOooPage,
-       e_mail_config_ews_ooo_page,
-       E_TYPE_MAIL_CONFIG_ACTIVITY_PAGE,
-       0,
-       G_IMPLEMENT_INTERFACE_DYNAMIC (
-               E_TYPE_MAIL_CONFIG_PAGE,
-               e_mail_config_ews_ooo_page_interface_init))
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EMailConfigEwsOooPage, e_mail_config_ews_ooo_page, 
E_TYPE_MAIL_CONFIG_ACTIVITY_PAGE, 0,
+       G_ADD_PRIVATE_DYNAMIC (EMailConfigEwsOooPage)
+       G_IMPLEMENT_INTERFACE_DYNAMIC (E_TYPE_MAIL_CONFIG_PAGE, e_mail_config_ews_ooo_page_interface_init))
 
 static void
 async_context_free (gpointer ptr)
@@ -322,38 +313,32 @@ mail_config_ews_ooo_page_get_property (GObject *object,
 static void
 mail_config_ews_ooo_page_dispose (GObject *object)
 {
-       EMailConfigEwsOooPagePrivate *priv;
-
-       priv = E_MAIL_CONFIG_EWS_OOO_PAGE_GET_PRIVATE (object);
+       EMailConfigEwsOooPage *ooo_page = E_MAIL_CONFIG_EWS_OOO_PAGE (object);
 
-       if (priv->refresh_cancellable) {
-               g_cancellable_cancel (priv->refresh_cancellable);
-               g_clear_object (&priv->refresh_cancellable);
+       if (ooo_page->priv->refresh_cancellable) {
+               g_cancellable_cancel (ooo_page->priv->refresh_cancellable);
+               g_clear_object (&ooo_page->priv->refresh_cancellable);
        }
 
-       g_clear_object (&priv->registry);
-       g_clear_object (&priv->account_source);
-       g_clear_object (&priv->collection_source);
-       g_clear_object (&priv->identity_source);
-       g_clear_object (&priv->oof_settings);
+       g_clear_object (&ooo_page->priv->registry);
+       g_clear_object (&ooo_page->priv->account_source);
+       g_clear_object (&ooo_page->priv->collection_source);
+       g_clear_object (&ooo_page->priv->identity_source);
+       g_clear_object (&ooo_page->priv->oof_settings);
 
        /* Chain up to parent's dispose() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_ooo_page_parent_class)->
-               dispose (object);
+       G_OBJECT_CLASS (e_mail_config_ews_ooo_page_parent_class)->dispose (object);
 }
 
 static void
 mail_config_ews_ooo_page_finalize (GObject *object)
 {
-       EMailConfigEwsOooPagePrivate *priv;
+       EMailConfigEwsOooPage *ooo_page = E_MAIL_CONFIG_EWS_OOO_PAGE (object);
 
-       priv = E_MAIL_CONFIG_EWS_OOO_PAGE_GET_PRIVATE (object);
-
-       g_mutex_clear (&priv->oof_settings_lock);
+       g_mutex_clear (&ooo_page->priv->oof_settings_lock);
 
        /* Chain up to parent's finalize() method. */
-       G_OBJECT_CLASS (e_mail_config_ews_ooo_page_parent_class)->
-               finalize (object);
+       G_OBJECT_CLASS (e_mail_config_ews_ooo_page_parent_class)->finalize (object);
 }
 
 static void
@@ -633,7 +618,7 @@ mail_config_ews_ooo_page_submit (EMailConfigPage *page,
                                  GAsyncReadyCallback callback,
                                  gpointer user_data)
 {
-       EMailConfigEwsOooPagePrivate *priv;
+       EMailConfigEwsOooPage *ooo_page;
        GSimpleAsyncResult *simple;
        GtkToggleButton *toggle_button;
        GtkTextBuffer *text_buffer;
@@ -643,15 +628,15 @@ mail_config_ews_ooo_page_submit (EMailConfigPage *page,
        time_t tm;
        gulong signal_id;
 
-       priv = E_MAIL_CONFIG_EWS_OOO_PAGE_GET_PRIVATE (page);
+       ooo_page = E_MAIL_CONFIG_EWS_OOO_PAGE (page);
 
-       g_mutex_lock (&priv->oof_settings_lock);
+       g_mutex_lock (&ooo_page->priv->oof_settings_lock);
 
        /* It may be that the Out of Office settings are still
         * loading or have failed to load, in which case there
         * are obviously no changes to submit. */
-       if (priv->oof_settings == NULL) {
-               g_mutex_unlock (&priv->oof_settings_lock);
+       if (!ooo_page->priv->oof_settings) {
+               g_mutex_unlock (&ooo_page->priv->oof_settings_lock);
 
                simple = g_simple_async_result_new (
                        G_OBJECT (page), callback, user_data,
@@ -663,63 +648,63 @@ mail_config_ews_ooo_page_submit (EMailConfigPage *page,
        }
 
        signal_id = g_signal_connect_swapped (
-               priv->oof_settings, "notify",
-               G_CALLBACK (ews_oof_settings_changed), &priv->changed);
+               ooo_page->priv->oof_settings, "notify",
+               G_CALLBACK (ews_oof_settings_changed), &ooo_page->priv->changed);
 
-       toggle_button = GTK_TOGGLE_BUTTON (priv->enabled_radio_button);
+       toggle_button = GTK_TOGGLE_BUTTON (ooo_page->priv->enabled_radio_button);
        if (gtk_toggle_button_get_active (toggle_button))
                e_ews_oof_settings_set_state (
-                       priv->oof_settings,
+                       ooo_page->priv->oof_settings,
                        E_EWS_OOF_STATE_ENABLED);
 
-       toggle_button = GTK_TOGGLE_BUTTON (priv->disabled_radio_button);
+       toggle_button = GTK_TOGGLE_BUTTON (ooo_page->priv->disabled_radio_button);
        if (gtk_toggle_button_get_active (toggle_button))
                e_ews_oof_settings_set_state (
-                       priv->oof_settings,
+                       ooo_page->priv->oof_settings,
                        E_EWS_OOF_STATE_DISABLED);
 
-       toggle_button = GTK_TOGGLE_BUTTON (priv->scheduled_radio_button);
+       toggle_button = GTK_TOGGLE_BUTTON (ooo_page->priv->scheduled_radio_button);
        if (gtk_toggle_button_get_active (toggle_button))
                e_ews_oof_settings_set_state (
-                       priv->oof_settings,
+                       ooo_page->priv->oof_settings,
                        E_EWS_OOF_STATE_SCHEDULED);
 
-       tm = e_date_edit_get_time (E_DATE_EDIT (priv->start_time));
+       tm = e_date_edit_get_time (E_DATE_EDIT (ooo_page->priv->start_time));
        date_time = g_date_time_new_from_unix_utc ((gint64) tm);
-       e_ews_oof_settings_set_start_time (priv->oof_settings, date_time);
+       e_ews_oof_settings_set_start_time (ooo_page->priv->oof_settings, date_time);
        g_date_time_unref (date_time);
 
-       tm = e_date_edit_get_time (E_DATE_EDIT (priv->end_time));
+       tm = e_date_edit_get_time (E_DATE_EDIT (ooo_page->priv->end_time));
        date_time = g_date_time_new_from_unix_utc ((gint64) tm);
-       e_ews_oof_settings_set_end_time (priv->oof_settings, date_time);
+       e_ews_oof_settings_set_end_time (ooo_page->priv->oof_settings, date_time);
        g_date_time_unref (date_time);
 
-       text_buffer = priv->internal_reply;
+       text_buffer = ooo_page->priv->internal_reply;
        gtk_text_buffer_get_bounds (text_buffer, &start, &end);
        text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE);
-       e_ews_oof_settings_set_internal_reply (priv->oof_settings, text);
+       e_ews_oof_settings_set_internal_reply (ooo_page->priv->oof_settings, text);
        g_free (text);
 
-       e_ews_oof_settings_set_external_audience (priv->oof_settings,
-               gtk_combo_box_get_active (GTK_COMBO_BOX (priv->external_audience)));
+       e_ews_oof_settings_set_external_audience (ooo_page->priv->oof_settings,
+               gtk_combo_box_get_active (GTK_COMBO_BOX (ooo_page->priv->external_audience)));
 
-       text_buffer = priv->external_reply;
+       text_buffer = ooo_page->priv->external_reply;
        gtk_text_buffer_get_bounds (text_buffer, &start, &end);
        text = gtk_text_buffer_get_text (text_buffer, &start, &end, FALSE);
-       e_ews_oof_settings_set_external_reply (priv->oof_settings, text);
+       e_ews_oof_settings_set_external_reply (ooo_page->priv->oof_settings, text);
        g_free (text);
 
        simple = g_simple_async_result_new (
                G_OBJECT (page), callback, user_data,
                mail_config_ews_ooo_page_submit);
 
-       g_signal_handler_disconnect (priv->oof_settings, signal_id);
+       g_signal_handler_disconnect (ooo_page->priv->oof_settings, signal_id);
 
-       if (priv->changed) {
+       if (ooo_page->priv->changed) {
                g_simple_async_result_set_check_cancellable (simple, cancellable);
 
                e_ews_oof_settings_submit (
-                       priv->oof_settings, cancellable,
+                       ooo_page->priv->oof_settings, cancellable,
                        mail_config_ews_ooo_page_submit_cb,
                        g_object_ref (simple));
        } else {
@@ -728,7 +713,7 @@ mail_config_ews_ooo_page_submit (EMailConfigPage *page,
 
        g_object_unref (simple);
 
-       g_mutex_unlock (&priv->oof_settings_lock);
+       g_mutex_unlock (&ooo_page->priv->oof_settings_lock);
 }
 
 static gboolean
@@ -861,9 +846,6 @@ e_mail_config_ews_ooo_page_class_init (EMailConfigEwsOooPageClass *class)
 {
        GObjectClass *object_class;
 
-       g_type_class_add_private (
-               class, sizeof (EMailConfigEwsOooPagePrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->set_property = mail_config_ews_ooo_page_set_property;
        object_class->get_property = mail_config_ews_ooo_page_get_property;
@@ -933,7 +915,7 @@ e_mail_config_ews_ooo_page_class_finalize (EMailConfigEwsOooPageClass *class)
 static void
 e_mail_config_ews_ooo_page_init (EMailConfigEwsOooPage *page)
 {
-       page->priv = E_MAIL_CONFIG_EWS_OOO_PAGE_GET_PRIVATE (page);
+       page->priv = e_mail_config_ews_ooo_page_get_instance_private (page);
 
        g_mutex_init (&page->priv->oof_settings_lock);
 }
@@ -999,7 +981,7 @@ e_mail_config_ews_ooo_page_refresh (EMailConfigEwsOooPage *page)
        async_context->page = g_object_ref (page);
        async_context->activity = activity;  /* takes ownership */
        async_context->source = g_object_ref (source);
-       async_context->settings = g_object_ref (settings);
+       async_context->settings = G_OBJECT (g_object_ref (settings));
 
        /* Property changes can cause update of the UI, but this runs in a thread,
           thus freeze the notify till be back in UI thread */
diff --git a/src/EWS/evolution/e-mail-part-ews-sharing-metadata.c 
b/src/EWS/evolution/e-mail-part-ews-sharing-metadata.c
index 19b03de1..815d72e7 100644
--- a/src/EWS/evolution/e-mail-part-ews-sharing-metadata.c
+++ b/src/EWS/evolution/e-mail-part-ews-sharing-metadata.c
@@ -152,7 +152,7 @@ ews_sharing_metadata_btn_clicked_cb (EWebView *web_view,
                alert_sink = E_ALERT_SINK (web_view);
 
        sd = g_slice_new (SubscribeData);
-       sd->ews_store = g_object_ref (store);
+       sd->ews_store = CAMEL_EWS_STORE (g_object_ref (store));
        sd->cnc = camel_ews_store_ref_connection (CAMEL_EWS_STORE (store));
        sd->params = e_named_parameters_new_string (element_value);
 
diff --git a/src/EWS/registry/e-ews-backend.c b/src/EWS/registry/e-ews-backend.c
index b9915a9e..9c06f919 100644
--- a/src/EWS/registry/e-ews-backend.c
+++ b/src/EWS/registry/e-ews-backend.c
@@ -13,10 +13,6 @@
 #include "common/e-ews-connection-utils.h"
 #include "common/e-source-ews-folder.h"
 
-#define E_EWS_BACKEND_GET_PRIVATE(obj) \
-       (G_TYPE_INSTANCE_GET_PRIVATE \
-       ((obj), E_TYPE_EWS_BACKEND, EEwsBackendPrivate))
-
 typedef struct _SyncFoldersClosure SyncFoldersClosure;
 
 struct _EEwsBackendPrivate {
@@ -48,10 +44,8 @@ struct _SyncFoldersClosure {
        GHashTable *old_sources; /* gchar *folder_id ~> ESource * */
 };
 
-G_DEFINE_DYNAMIC_TYPE (
-       EEwsBackend,
-       e_ews_backend,
-       E_TYPE_COLLECTION_BACKEND)
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (EEwsBackend, e_ews_backend, E_TYPE_COLLECTION_BACKEND, 0,
+       G_ADD_PRIVATE_DYNAMIC (EEwsBackend))
 
 static void
 sync_folders_closure_free (SyncFoldersClosure *closure)
@@ -674,22 +668,20 @@ ews_backend_sync_folders_idle_cb (gpointer user_data)
 static void
 ews_backend_dispose (GObject *object)
 {
-       EEwsBackendPrivate *priv;
+       EEwsBackend *ews_backend = E_EWS_BACKEND (object);
        ESource *source;
 
-       priv = E_EWS_BACKEND_GET_PRIVATE (object);
-
        source = e_backend_get_source (E_BACKEND (object));
-       if (source && priv->source_changed_id) {
-               g_signal_handler_disconnect (source, priv->source_changed_id);
-               priv->source_changed_id = 0;
+       if (source && ews_backend->priv->source_changed_id) {
+               g_signal_handler_disconnect (source, ews_backend->priv->source_changed_id);
+               ews_backend->priv->source_changed_id = 0;
        }
 
-       g_hash_table_remove_all (priv->folders);
+       g_hash_table_remove_all (ews_backend->priv->folders);
 
-       g_mutex_lock (&priv->connection_lock);
-       g_clear_object (&priv->connection);
-       g_mutex_unlock (&priv->connection_lock);
+       g_mutex_lock (&ews_backend->priv->connection_lock);
+       g_clear_object (&ews_backend->priv->connection);
+       g_mutex_unlock (&ews_backend->priv->connection_lock);
 
        /* Chain up to parent's dispose() method. */
        G_OBJECT_CLASS (e_ews_backend_parent_class)->dispose (object);
@@ -698,22 +690,16 @@ ews_backend_dispose (GObject *object)
 static void
 ews_backend_finalize (GObject *object)
 {
-       EEwsBackendPrivate *priv;
-
-       priv = E_EWS_BACKEND_GET_PRIVATE (object);
-
-       g_free (priv->deleted_items_folder_id);
-       g_hash_table_destroy (priv->folders);
-       g_mutex_clear (&priv->folders_lock);
-
-       g_free (priv->oal_selected);
-
-       g_free (priv->sync_state);
-       g_mutex_clear (&priv->sync_state_lock);
-
-       g_mutex_clear (&priv->connection_lock);
-
-       e_named_parameters_free (priv->credentials);
+       EEwsBackend *ews_backend = E_EWS_BACKEND (object);
+
+       g_free (ews_backend->priv->deleted_items_folder_id);
+       g_hash_table_destroy (ews_backend->priv->folders);
+       g_mutex_clear (&ews_backend->priv->folders_lock);
+       g_free (ews_backend->priv->oal_selected);
+       g_free (ews_backend->priv->sync_state);
+       g_mutex_clear (&ews_backend->priv->sync_state_lock);
+       g_mutex_clear (&ews_backend->priv->connection_lock);
+       e_named_parameters_free (ews_backend->priv->credentials);
 
        /* Chain up to parent's finalize() method. */
        G_OBJECT_CLASS (e_ews_backend_parent_class)->finalize (object);
@@ -1227,8 +1213,6 @@ e_ews_backend_class_init (EEwsBackendClass *class)
        EBackendClass *backend_class;
        ECollectionBackendClass *collection_backend_class;
 
-       g_type_class_add_private (class, sizeof (EEwsBackendPrivate));
-
        object_class = G_OBJECT_CLASS (class);
        object_class->dispose = ews_backend_dispose;
        object_class->finalize = ews_backend_finalize;
@@ -1258,7 +1242,7 @@ e_ews_backend_class_finalize (EEwsBackendClass *class)
 static void
 e_ews_backend_init (EEwsBackend *backend)
 {
-       backend->priv = E_EWS_BACKEND_GET_PRIVATE (backend);
+       backend->priv = e_ews_backend_get_instance_private (backend);
 
        backend->priv->folders = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]