This is the worst bug report ever, and a stupid revert.

First of all, when reverting, please list the commits being reverted 
because unlike what you said, you didn't revert all of them. Second of 
all, I assume you are talking about the one small issue with 
thumbnailing not working, which hardly means it's "completely broken". 
If there's anything else, please report, because I don't know of any.
I obviously tested stuff, this one went unnoticed, and I already said I 
was working on fixing it.
Also, you reverted unrelated commits that don't break the thumbnails in 
efm, more specifically, the last one you reverted. 
f6156c9a6234237757b61960c690e8d55779e764

--
Tom.

On 30/08/14 13:13, Mike Blumenkrantz wrote:
> discomfitor pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=7b0db79c2d014bb2f1ed8dfbbb04ba291baad8f7
>
> commit 7b0db79c2d014bb2f1ed8dfbbb04ba291baad8f7
> Author: Mike Blumenkrantz <[email protected]>
> Date:   Sat Aug 30 08:00:47 2014 -0400
>
>      revert all recent ecore-con related eo changes. completely broken.
>
>      please test things before committing.
>
>      reverts all changes since and including 
> f6156c9a6234237757b61960c690e8d55779e764
> ---
>   src/Makefile_Ecore_Con.am                |  14 +-
>   src/lib/ecore_con/Ecore_Con.h            |  27 +-
>   src/lib/ecore_con/Ecore_Con_Eo.h         |   2 -
>   src/lib/ecore_con/Ecore_Con_Legacy.h     |   2 -
>   src/lib/ecore_con/ecore_con.c            | 138 +++------
>   src/lib/ecore_con/ecore_con_base.eo      |   7 +-
>   src/lib/ecore_con/ecore_con_connector.eo |   8 -
>   src/lib/ecore_con/ecore_con_private.h    |  27 ++
>   src/lib/ecore_con/ecore_con_server.eo    |  18 +-
>   src/lib/ecore_con/ecore_con_url.c        | 496 
> ++++++++++++++++---------------
>   src/lib/ecore_con/ecore_con_url.eo       |  25 --
>   11 files changed, 352 insertions(+), 412 deletions(-)
>
> diff --git a/src/Makefile_Ecore_Con.am b/src/Makefile_Ecore_Con.am
> index 3fecaa2..ff79a38 100644
> --- a/src/Makefile_Ecore_Con.am
> +++ b/src/Makefile_Ecore_Con.am
> @@ -7,27 +7,19 @@ ecorecon_eobuiltheaders = \
>                    lib/ecore_con/ecore_con_client.eo.h \
>                    lib/ecore_con/ecore_con_client.eo.legacy.h \
>                    lib/ecore_con/ecore_con_server.eo.h \
> -                 lib/ecore_con/ecore_con_server.eo.legacy.h \
> -                 lib/ecore_con/ecore_con_connector.eo.h \
> -                 lib/ecore_con/ecore_con_connector.eo.legacy.h \
> -                 lib/ecore_con/ecore_con_url.eo.h \
> -                 lib/ecore_con/ecore_con_url.eo.legacy.h
> +                 lib/ecore_con/ecore_con_server.eo.legacy.h
>
>   BUILT_SOURCES += \
>                    ${ecorecon_eobuiltheaders} \
>                    lib/ecore_con/ecore_con_base.eo.c \
>                    lib/ecore_con/ecore_con_client.eo.c \
> -                 lib/ecore_con/ecore_con_server.eo.c \
> -                 lib/ecore_con/ecore_con_connector.eo.c \
> -                 lib/ecore_con/ecore_con_url.eo.c
> +                 lib/ecore_con/ecore_con_server.eo.c
>
>   ecoreconeolianfilesdir = $(datadir)/eolian/include/ecore-@VMAJ@
>   ecoreconeolianfiles_DATA = \
>                 lib/ecore_con/ecore_con_base.eo \
>                 lib/ecore_con/ecore_con_client.eo \
> -              lib/ecore_con/ecore_con_server.eo \
> -              lib/ecore_con/ecore_con_connector.eo \
> -              lib/ecore_con/ecore_con_url.eo
> +              lib/ecore_con/ecore_con_server.eo
>
>   EXTRA_DIST += \
>                 ${ecoreconeolianfiles_DATA}
> diff --git a/src/lib/ecore_con/Ecore_Con.h b/src/lib/ecore_con/Ecore_Con.h
> index 4e012c5..e8cc5f1 100644
> --- a/src/lib/ecore_con/Ecore_Con.h
> +++ b/src/lib/ecore_con/Ecore_Con.h
> @@ -232,7 +232,12 @@ typedef Eo Ecore_Con;
>    */
>   typedef struct Ecore_Con_Socks Ecore_Con_Socks;
>
> -typedef enum _Ecore_Con_Type Ecore_Con_Type;
> +/**
> + * @typedef Ecore_Con_Url
> + * A handle to an http upload/download object
> + * @ingroup Ecore_Con_Url_Group
> + */
> +typedef struct _Ecore_Con_Url Ecore_Con_Url;
>
>   #ifndef EFL_NOLEGACY_API_SUPPORT
>   #include "Ecore_Con_Legacy.h"
> @@ -1392,7 +1397,25 @@ EAPI Ecore_Con_Url *   ecore_con_url_custom_new(const 
> char *url,
>    * @see ecore_con_url_new()
>    */
>   EAPI void              ecore_con_url_free(Ecore_Con_Url *url_con);
> -
> +/**
> + * Sets the URL to send the request to.
> + *
> + * @param url_con Connection object through which the request will be sent.
> + * @param url URL that will receive the request
> + *
> + * @return @c EINA_TRUE on success, @c EINA_FALSE on error.
> + */
> +EAPI Eina_Bool         ecore_con_url_url_set(Ecore_Con_Url *url_con,
> +                                             const char *url);
> +/**
> + * Gets the URL to send the request to.
> + *
> + * @param url_con Connection object through which the request will be sent.
> + * @return URL that will receive the request, @c NULL on failure. URL is
> + * stringshared.
> + * @since 1.1
> + */
> +EAPI const char       *ecore_con_url_url_get(Ecore_Con_Url *url_con);
>   /**
>    * Associates data with a connection object.
>    *
> diff --git a/src/lib/ecore_con/Ecore_Con_Eo.h 
> b/src/lib/ecore_con/Ecore_Con_Eo.h
> index aa3719a..9bddda4 100644
> --- a/src/lib/ecore_con/Ecore_Con_Eo.h
> +++ b/src/lib/ecore_con/Ecore_Con_Eo.h
> @@ -1,5 +1,3 @@
>   #include "ecore_con_base.eo.h"
>   #include "ecore_con_server.eo.h"
> -#include "ecore_con_connector.eo.h"
>   #include "ecore_con_client.eo.h"
> -#include "ecore_con_url.eo.h"
> diff --git a/src/lib/ecore_con/Ecore_Con_Legacy.h 
> b/src/lib/ecore_con/Ecore_Con_Legacy.h
> index 11fa2d1..f655080 100644
> --- a/src/lib/ecore_con/Ecore_Con_Legacy.h
> +++ b/src/lib/ecore_con/Ecore_Con_Legacy.h
> @@ -1,5 +1,3 @@
>   #include "ecore_con_base.eo.legacy.h"
>   #include "ecore_con_server.eo.legacy.h"
> -#include "ecore_con_connector.eo.legacy.h"
>   #include "ecore_con_client.eo.legacy.h"
> -#include "ecore_con_url.eo.legacy.h"
> diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
> index ace1ef4..14db253 100644
> --- a/src/lib/ecore_con/ecore_con.c
> +++ b/src/lib/ecore_con/ecore_con.c
> @@ -107,14 +107,6 @@ static void        _ecore_con_lookup_done(void *data,
>
>   static const char *_ecore_con_pretty_ip(struct sockaddr *client_addr);
>
> -#define EO_CONSTRUCTOR_CHECK_RETURN(obj) do { \
> -     if (eo_do(obj, eo_finalized_get())) \
> -       { \
> -          ERR("This function is only allowed during construction."); \
> -          return; \
> -       } \
> -} while (0)
> -
>   #ifdef HAVE_SYSTEMD
>   int sd_fd_index = 0;
>   int sd_fd_max = 0;
> @@ -290,10 +282,7 @@ _ecore_con_base_lookup(Eo *kls_obj EINA_UNUSED, void *pd 
> EINA_UNUSED, const char
>      if (!name || !done_cb)
>        return EINA_FALSE;
>
> -   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL,
> -         ecore_con_server_obj_connection_type_set(ECORE_CON_REMOTE_TCP),
> -         ecore_con_server_obj_name_set(name),
> -         ecore_con_obj_port_set(1025));
> +   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
>      Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, 
> ECORE_CON_SERVER_CLASS);
>      if (!svr)
>        return EINA_FALSE;
> @@ -312,7 +301,14 @@ _ecore_con_base_lookup(Eo *kls_obj EINA_UNUSED, void *pd 
> EINA_UNUSED, const char
>      if (!svr->name)
>        goto on_error;
>
> +   svr->type = ECORE_CON_REMOTE_TCP;
> +   svr->port = 1025;
>      svr->data = lk;
> +   svr->created = EINA_TRUE;
> +   svr->reject_excess_clients = EINA_FALSE;
> +   svr->client_limit = -1;
> +   svr->clients = NULL;
> +   svr->ppid = getpid();
>
>      memset(&hints, 0, sizeof(struct addrinfo));
>      hints.ai_family = AF_UNSPEC;
> @@ -354,53 +350,39 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
>                        const void *data)
>   {
>      Ecore_Con_Server *obj;
> +   Ecore_Con_Type type;
> +
> +   if (port < 0 || !name)
> +     return NULL;  /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
>
>      /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
>      /* remote system socket: TCP/IP: [name]:[port] */
> -   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL,
> -         ecore_con_server_obj_connection_type_set(compl_type),
> -         ecore_con_server_obj_name_set(name),
> -         ecore_con_obj_port_set(port));
> -
> -   ecore_con_server_data_set(obj, (void *) data);
> -
> -   return obj;
> -}
> -
> -EOLIAN static void
> -_ecore_con_server_eo_base_constructor(Ecore_Con_Server *obj, 
> Ecore_Con_Server_Data *svr)
> -{
> -   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_constructor());
> +   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
> +   Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, 
> ECORE_CON_SERVER_CLASS);
>
>      svr->fd = -1;
>      svr->start_time = ecore_time_get();
> +   svr->type = compl_type;
> +   svr->port = port;
> +   svr->data = (void *)data;
>      svr->created = EINA_TRUE;
> +   svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == 
> ECORE_CON_LOAD_CERT;
>      svr->reject_excess_clients = EINA_FALSE;
>      svr->client_limit = -1;
>      svr->clients = NULL;
>      svr->ppid = getpid();
> -}
> -
> -EOLIAN static Eo *
> -_ecore_con_server_eo_base_finalize(Ecore_Con_Server *obj, 
> Ecore_Con_Server_Data *svr)
> -{
> -   Ecore_Con_Type compl_type = svr->type;
> -   Ecore_Con_Type type;
> -
> -   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_finalize());
> -
> -   svr->use_cert = (svr->type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == 
> ECORE_CON_LOAD_CERT;
>
>      servers = eina_list_append(servers, obj);
>
> -   type = compl_type & ECORE_CON_TYPE;
> -
> +   svr->name = strdup(name);
>      if (!svr->name)
>        goto error;
>
>      if (ecore_con_ssl_server_prepare(obj, compl_type & ECORE_CON_SSL))
>        goto error;
>
> +   type = compl_type & ECORE_CON_TYPE;
> +
>      if ((type == ECORE_CON_LOCAL_USER) ||
>          (type == ECORE_CON_LOCAL_SYSTEM) ||
>          (type == ECORE_CON_LOCAL_ABSTRACT))
> @@ -444,36 +426,31 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
>                            const void *data)
>   {
>      Ecore_Con_Server *obj;
> +   Ecore_Con_Type type;
> +
> +   if ((!name) || (!name[0]))
> +     return NULL;
>      /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
>      /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
>      /* remote system socket: TCP/IP: [name]:[port] */
> -   obj = eo_add(ECORE_CON_CONNECTOR_CLASS, NULL,
> -         ecore_con_server_obj_connection_type_set(compl_type),
> -         ecore_con_server_obj_name_set(name),
> -         ecore_con_obj_port_set(port));
> -
> -   ecore_con_server_data_set(obj, (void *) data);
> -
> -   return obj;
> -}
> -
> -EOLIAN static Eo *
> -_ecore_con_connector_eo_base_finalize(Ecore_Con_Server *obj, void *pd 
> EINA_UNUSED)
> -{
> +   obj = eo_add(ECORE_CON_SERVER_CLASS, NULL);
>      Ecore_Con_Server_Data *svr = eo_data_scope_get(obj, 
> ECORE_CON_SERVER_CLASS);
> -   Ecore_Con_Type compl_type = svr->type;
> -   Ecore_Con_Type type;
> -
> -   /* XXX: We intentionally put SERVER class here and not connector, as we'd
> -    * like to skip that one. */
> -   eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_finalize());
> -
>
> +   svr->fd = -1;
> +   svr->type = compl_type;
> +   svr->port = port;
> +   svr->data = (void *)data;
> +   svr->created = EINA_FALSE;
>      svr->use_cert = (compl_type & ECORE_CON_SSL & ECORE_CON_LOAD_CERT) == 
> ECORE_CON_LOAD_CERT;
>      svr->disable_proxy = (compl_type & ECORE_CON_SUPER_SSL & 
> ECORE_CON_NO_PROXY) == ECORE_CON_NO_PROXY;
> +   svr->reject_excess_clients = EINA_FALSE;
> +   svr->clients = NULL;
> +   svr->client_limit = -1;
> +
>      servers = eina_list_append(servers, obj);
>
> -   if (!svr->name || (svr->port < 0))
> +   svr->name = strdup(name);
> +   if (!svr->name)
>        goto error;
>
>      type = compl_type & ECORE_CON_TYPE;
> @@ -502,7 +479,7 @@ _ecore_con_connector_eo_base_finalize(Ecore_Con_Server 
> *obj, void *pd EINA_UNUSE
>                                (type == ECORE_CON_REMOTE_CORK) ||
>                                (type == ECORE_CON_REMOTE_UDP) ||
>                                (type == ECORE_CON_REMOTE_BROADCAST)) &&
> -                            (svr->port < 0), error);
> +                            (port < 0), error);
>
>      if ((type == ECORE_CON_LOCAL_USER) ||
>          (type == ECORE_CON_LOCAL_SYSTEM) ||
> @@ -617,31 +594,6 @@ _ecore_con_server_clients_get(Eo *obj EINA_UNUSED, 
> Ecore_Con_Server_Data *svr)
>      return svr->clients;
>   }
>
> -EOLIAN static void
> -_ecore_con_server_connection_type_set(Eo *obj, Ecore_Con_Server_Data *svr, 
> Ecore_Con_Type type)
> -{
> -   EO_CONSTRUCTOR_CHECK_RETURN(obj);
> -
> -   svr->type = type;
> -}
> -
> -EOLIAN static Ecore_Con_Type
> -_ecore_con_server_connection_type_get(Eo *obj EINA_UNUSED, 
> Ecore_Con_Server_Data *svr)
> -{
> -   return svr->type;
> -}
> -
> -EOLIAN static void
> -_ecore_con_server_name_set(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr, 
> const char *name)
> -{
> -   EO_CONSTRUCTOR_CHECK_RETURN(obj);
> -
> -   if (svr->name)
> -      free(svr->name);
> -
> -   svr->name = strdup(name);
> -}
> -
>   EOLIAN static const char *
>   _ecore_con_server_name_get(Eo *obj EINA_UNUSED, Ecore_Con_Server_Data *svr)
>   {
> @@ -654,14 +606,6 @@ ecore_con_server_port_get(const Ecore_Con *obj)
>      return eo_do((Ecore_Con *)obj, ecore_con_obj_port_get());
>   }
>
> -EOLIAN static void
> -_ecore_con_server_ecore_con_base_port_set(Eo *obj EINA_UNUSED, 
> Ecore_Con_Server_Data *svr, int port)
> -{
> -   EO_CONSTRUCTOR_CHECK_RETURN(obj);
> -
> -   svr->port = port;
> -}
> -
>   EOLIAN static int
>   _ecore_con_server_ecore_con_base_port_get(Eo *obj EINA_UNUSED, 
> Ecore_Con_Server_Data *svr)
>   {
> @@ -1283,7 +1227,7 @@ _ecore_con_server_eo_base_destructor(Eo *obj, 
> Ecore_Con_Server_Data *svr)
>      Ecore_Con_Client *cl_obj;
>      double t_start, t;
>
> -   if (svr->event_count) goto end;
> +   if (svr->event_count) return;
>
>      while (svr->infos)
>        {
> @@ -1309,7 +1253,7 @@ _ecore_con_server_eo_base_destructor(Eo *obj, 
> Ecore_Con_Server_Data *svr)
>   #ifdef _WIN32
>      ecore_con_local_win32_server_del(obj);
>   #endif
> -   if (svr->event_count) goto end;
> +   if (svr->event_count) return;
>
>      if (svr->buf)
>        eina_binbuf_free(svr->buf);
> @@ -1352,7 +1296,6 @@ _ecore_con_server_eo_base_destructor(Eo *obj, 
> Ecore_Con_Server_Data *svr)
>      servers = eina_list_remove(servers, obj);
>      svr->data = NULL;
>
> -end:
>      eo_do_super(obj, ECORE_CON_SERVER_CLASS, eo_destructor());
>   }
>
> @@ -2837,4 +2780,3 @@ _ecore_con_lookup_done(void *data,
>   #include "ecore_con_base.eo.c"
>   #include "ecore_con_client.eo.c"
>   #include "ecore_con_server.eo.c"
> -#include "ecore_con_connector.eo.c"
> diff --git a/src/lib/ecore_con/ecore_con_base.eo 
> b/src/lib/ecore_con/ecore_con_base.eo
> index e6eed1b..d1e3845 100644
> --- a/src/lib/ecore_con/ecore_con_base.eo
> +++ b/src/lib/ecore_con/ecore_con_base.eo
> @@ -38,9 +38,6 @@ abstract Ecore.Con.Base (Eo.Base) {
>             * @brief Return the port that the obj is connected to
>             *
>             */
> -         set {
> -             legacy: null;
> -         }
>            get {
>                legacy: null;
>            }
> @@ -198,9 +195,7 @@ type Ecore_Con_Dns_Cb: func void (const(char) *canonname,
>   * Add events (to all of the ecore con stuff, e.g url).
>   * Make server the father of the client - make sure I don't leak references.
>   *
> -* Still need to add constructor client, and most likely migrate 
> ecore_con_eet.
> +* Still need to add constructors to server/client, and most likely migrate 
> ecore_con_eet.
>   *
>   * Split server to two classes, listener and connector (or w/e).
> -*
> -* Mark the constructing properties all around.
>   */
> diff --git a/src/lib/ecore_con/ecore_con_connector.eo 
> b/src/lib/ecore_con/ecore_con_connector.eo
> deleted file mode 100644
> index 9952637..0000000
> --- a/src/lib/ecore_con/ecore_con_connector.eo
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -class Ecore.Con.Connector (Ecore.Con.Server) {
> -   legacy_prefix: null;
> -   eo_prefix: ecore_con_connector_obj;
> -   data: null;
> -   implements {
> -      Eo.Base.finalize;
> -   }
> -}
> diff --git a/src/lib/ecore_con/ecore_con_private.h 
> b/src/lib/ecore_con/ecore_con_private.h
> index 93942e2..53c024a 100644
> --- a/src/lib/ecore_con/ecore_con_private.h
> +++ b/src/lib/ecore_con/ecore_con_private.h
> @@ -198,6 +198,33 @@ struct _Ecore_Con_Server_Data
>
>   typedef struct _Ecore_Con_Server_Data Ecore_Con_Server_Data;
>
> +struct _Ecore_Con_Url
> +{
> +   ECORE_MAGIC;
> +   void *curl_easy;
> +   struct curl_slist *headers;
> +   Eina_List *additional_headers;
> +   Eina_List *response_headers;
> +   const char *url;
> +   long proxy_type;
> +   int status;
> +
> +   Ecore_Timer *timer;
> +
> +   Ecore_Con_Url_Time time_condition;
> +   double timestamp;
> +   void *data;
> +
> +   void *post_data;
> +
> +   int received;
> +   int write_fd;
> +
> +   unsigned int event_count;
> +   Eina_Bool dead : 1;
> +   Eina_Bool multi : 1;
> +};
> +
>   struct _Ecore_Con_Info
>   {
>      unsigned int size;
> diff --git a/src/lib/ecore_con/ecore_con_server.eo 
> b/src/lib/ecore_con/ecore_con_server.eo
> index 83151cc..8fbd016 100644
> --- a/src/lib/ecore_con/ecore_con_server.eo
> +++ b/src/lib/ecore_con/ecore_con_server.eo
> @@ -1,3 +1,4 @@
> +/* FIXME: make abstract. */
>   class Ecore.Con.Server (Ecore.Con.Base) {
>      eo_prefix: ecore_con_server_obj;
>      properties {
> @@ -7,9 +8,6 @@ class Ecore.Con.Server (Ecore.Con.Base) {
>             *
>             * The name returned is the name used to connect on this server.
>             */
> -         set {
> -            legacy: null;
> -         }
>            get {
>            }
>            values {
> @@ -54,25 +52,11 @@ class Ecore.Con.Server (Ecore.Con.Base) {
>               const(Eina_List <const(Ecore.Con.Client) *>) *clients; /*@ The 
> list of clients on this server. */
>            }
>         }
> -      connection_type {
> -        get {
> -            legacy: null;
> -        }
> -        set {
> -            legacy: null;
> -        }
> -        values {
> -            Ecore_Con_Type conn_type;
> -        }
> -      }
>      }
>      implements {
> -      Eo.Base.constructor;
>         Eo.Base.destructor;
> -      Eo.Base.finalize;
>         Ecore.Con.Base.ip.get;
>         Ecore.Con.Base.uptime.get;
> -      Ecore.Con.Base.port.set;
>         Ecore.Con.Base.port.get;
>         Ecore.Con.Base.fd.get;
>         Ecore.Con.Base.connected.get;
> diff --git a/src/lib/ecore_con/ecore_con_url.c 
> b/src/lib/ecore_con/ecore_con_url.c
> index c1cb638..b6ea436 100644
> --- a/src/lib/ecore_con/ecore_con_url.c
> +++ b/src/lib/ecore_con/ecore_con_url.c
> @@ -30,8 +30,6 @@
>   #include "Ecore_Con.h"
>   #include "ecore_con_private.h"
>
> -#define MY_CLASS ECORE_CON_URL_CLASS
> -
>   // all the types, defines, enums etc. from curl that we actuall USE.
>   // we have to add to this if we use more things from curl not already
>   // defined here. see culr headers to get them from
> @@ -224,34 +222,6 @@ struct _Ecore_Con_Curl
>      curl_version_info_data *(*curl_version_info)(CURLversion);
>   };
>
> -struct _Ecore_Con_Url_Data
> -{
> -   void *curl_easy;
> -   struct curl_slist *headers;
> -   Eina_List *additional_headers;
> -   Eina_List *response_headers;
> -   const char *url;
> -   long proxy_type;
> -   int status;
> -
> -   Ecore_Timer *timer;
> -
> -   Ecore_Con_Url_Time time_condition;
> -   double timestamp;
> -   void *data;
> -
> -   void *post_data;
> -
> -   int received;
> -   int write_fd;
> -
> -   unsigned int event_count;
> -   Eina_Bool dead : 1;
> -   Eina_Bool multi : 1;
> -};
> -
> -typedef struct _Ecore_Con_Url_Data Ecore_Con_Url_Data;
> -
>   #define CURL_MIN_TIMEOUT 100
>
>   int ECORE_CON_EVENT_URL_DATA = 0;
> @@ -432,40 +402,29 @@ extern Ecore_Con_Socks *_ecore_con_proxy_global;
>   EAPI Ecore_Con_Url *
>   ecore_con_url_new(const char *url)
>   {
> -   Ecore_Con_Url *url_obj;
> -   url_obj = eo_add(ECORE_CON_URL_CLASS, NULL,
> -         ecore_con_url_obj_url_set(url));
> +   Ecore_Con_Url *url_con;
> +   CURLcode ret;
>
> -   return url_obj;
> -}
> +   if (!_init_count) return NULL;
> +   if (!_c_init()) return NULL;
>
> -EOLIAN static void
> -_ecore_con_url_eo_base_constructor(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Data *url_con EINA_UNUSED)
> -{
> -   eo_do_super(url_obj, MY_CLASS, eo_constructor());
> +   url_con = calloc(1, sizeof(Ecore_Con_Url));
> +   if (!url_con) return NULL;
>
> -   if (!_init_count) eo_error_set(url_obj);
> -   if (!_c_init()) eo_error_set(url_obj);
> +   url_con->write_fd = -1;
>
>      url_con->curl_easy = _c->curl_easy_init();
>      if (!url_con->curl_easy)
>        {
> -        eo_error_set(url_obj);
> -        return;
> +        free(url_con);
> +        return NULL;
>        }
>
> -}
> -
> -EOLIAN static Eo *
> -_ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data 
> *url_con)
> -{
> -   CURLcode ret;
> -
> -   url_con->write_fd = -1;
> +   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_CON_URL);
>
> -   if (!url_con->url)
> +   if (!ecore_con_url_url_set(url_con, url))
>        {
> -        ecore_con_url_free(url_obj);
> +        ecore_con_url_free(url_con);
>           return NULL;
>        }
>
> @@ -503,8 +462,8 @@ _ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Data *url_
>                      _ecore_con_proxy_global->port);
>           else snprintf(proxy, sizeof(proxy), "%s", host);
>
> -        ecore_con_url_proxy_set(url_obj, proxy);
> -        ecore_con_url_proxy_username_set(url_obj,
> +        ecore_con_url_proxy_set(url_con, proxy);
> +        ecore_con_url_proxy_username_set(url_con,
>                                            _ecore_con_proxy_global->username);
>        }
>
> @@ -514,45 +473,44 @@ _ecore_con_url_eo_base_finalize(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Data *url_
>        {
>           ERR("Could not set CURLOPT_ENCODING to \"gzip,deflate\": %s",
>               _c->curl_easy_strerror(ret));
> -        ecore_con_url_free(url_obj);
> +        ecore_con_url_free(url_con);
>           return NULL;
>        }
>
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEFUNCTION,
>                           _ecore_con_url_data_cb);
> -   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEDATA, url_obj);
> +   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEDATA, url_con);
>
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSFUNCTION,
>                           _ecore_con_url_progress_cb);
> -   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSDATA, url_obj);
> +   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSDATA, url_con);
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_NOPROGRESS, EINA_FALSE);
>
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERFUNCTION,
>                           _ecore_con_url_header_cb);
> -   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERDATA, url_obj);
> +   _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HEADERDATA, url_con);
>      /*
>       * FIXME: Check that these timeouts are sensible defaults
>       * FIXME: Provide a means to change these timeouts
>       */
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30);
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1);
> -   return url_obj;
> +   return url_con;
>   }
>
>   EAPI Ecore_Con_Url *
>   ecore_con_url_custom_new(const char *url,
>                            const char *custom_request)
>   {
> -   Ecore_Con_Url *url_obj;
> +   Ecore_Con_Url *url_con;
>      CURLcode ret;
>
>      if (!_init_count) return NULL;
>      if (!_c_init()) return NULL;
>      if (!url) return NULL;
>      if (!custom_request) return NULL;
> -   url_obj = ecore_con_url_new(url);
> -   if (!url_obj) return NULL;
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> +   url_con = ecore_con_url_new(url);
> +   if (!url_con) return NULL;
>
>      ret = _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_CUSTOMREQUEST,
>                                 custom_request);
> @@ -560,27 +518,23 @@ ecore_con_url_custom_new(const char *url,
>        {
>           ERR("Could not set a custom request string: %s",
>               _c->curl_easy_strerror(ret));
> -        ecore_con_url_free(url_obj);
> +        ecore_con_url_free(url_con);
>           return NULL;
>        }
> -   return url_obj;
> +   return url_con;
>   }
>
>   EAPI void
> -ecore_con_url_free(Ecore_Con_Url *url_obj)
> -{
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
> -
> -   eo_del(url_obj);
> -}
> -
> -EOLIAN static void
> -_ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, Ecore_Con_Url_Data 
> *url_con)
> +ecore_con_url_free(Ecore_Con_Url *url_con)
>   {
>      char *s;
>
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->curl_easy)
>        {
>           // FIXME : How can we delete curl_easy's fds ??
> @@ -593,8 +547,8 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Data *ur
>
>           if (url_con->multi)
>             {
> -             _ecore_con_url_multi_remove(url_obj);
> -             _url_con_list = eina_list_remove(_url_con_list, url_obj);
> +             _ecore_con_url_multi_remove(url_con);
> +             _url_con_list = eina_list_remove(_url_con_list, url_con);
>             }
>
>           _c->curl_easy_cleanup(url_con->curl_easy);
> @@ -605,6 +559,7 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Data *ur
>      url_con->timer = NULL;
>      url_con->dead = EINA_TRUE;
>      if (url_con->event_count) return;
> +   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_NONE);
>
>      _c->curl_slist_free_all(url_con->headers);
>      EINA_LIST_FREE(url_con->additional_headers, s)
> @@ -613,29 +568,42 @@ _ecore_con_url_eo_base_destructor(Ecore_Con_Url 
> *url_obj, Ecore_Con_Url_Data *ur
>        free(s);
>      eina_stringshare_del(url_con->url);
>      if (url_con->post_data) free(url_con->post_data);
> +   free(url_con);
>   }
>
> -EOLIAN static const char *
> -_ecore_con_url_url_get(Ecore_Con_Url *url_obj EINA_UNUSED, 
> Ecore_Con_Url_Data *url_con)
> +EAPI const char *
> +ecore_con_url_url_get(Ecore_Con_Url *url_con)
>   {
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return NULL;
> +     }
>      return url_con->url;
>   }
>
>   EAPI int
> -ecore_con_url_status_code_get(Ecore_Con_Url *url_obj)
> +ecore_con_url_status_code_get(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return 0;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return 0;
> +     }
>      if (url_con->status) return url_con->status;
> -   _ecore_con_url_status_get(url_obj);
> +   _ecore_con_url_status_get(url_con);
>      return url_con->status;
>   }
>
> -EOLIAN static Eina_Bool
> -_ecore_con_url_url_set(Ecore_Con_Url *url_obj EINA_UNUSED, 
> Ecore_Con_Url_Data *url_con, const char *url)
> +EAPI Eina_Bool
> +ecore_con_url_url_set(Ecore_Con_Url *url_con, const char *url)
>   {
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (url_con->dead) return EINA_FALSE;
>      eina_stringshare_replace(&url_con->url, url);
>      if (url_con->url)
> @@ -647,22 +615,27 @@ _ecore_con_url_url_set(Ecore_Con_Url *url_obj 
> EINA_UNUSED, Ecore_Con_Url_Data *u
>   }
>
>   EAPI void
> -ecore_con_url_data_set(Ecore_Con_Url *url_obj, void *data)
> +ecore_con_url_data_set(Ecore_Con_Url *url_con, void *data)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      url_con->data = data;
>   }
>
>   EAPI void
> -ecore_con_url_additional_header_add(Ecore_Con_Url *url_obj, const char *key, 
> const char *value)
> +ecore_con_url_additional_header_add(Ecore_Con_Url *url_con, const char *key, 
> const char *value)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      char *tmp;
>
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
> +
>      if (url_con->dead) return;
>      tmp = malloc(strlen(key) + strlen(value) + 3);
>      if (!tmp) return;
> @@ -672,75 +645,89 @@ ecore_con_url_additional_header_add(Ecore_Con_Url 
> *url_obj, const char *key, con
>   }
>
>   EAPI void
> -ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_obj)
> +ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      char *s;
>
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      EINA_LIST_FREE(url_con->additional_headers, s)
>        free(s);
>   }
>
>   EAPI void *
> -ecore_con_url_data_get(Ecore_Con_Url *url_obj)
> +ecore_con_url_data_get(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return NULL;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return NULL;
> +     }
>      return url_con->data;
>   }
>
>   EAPI void
> -ecore_con_url_time(Ecore_Con_Url *url_obj, Ecore_Con_Url_Time condition, 
> double timestamp)
> +ecore_con_url_time(Ecore_Con_Url *url_con, Ecore_Con_Url_Time condition, 
> double timestamp)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      url_con->time_condition = condition;
>      url_con->timestamp = timestamp;
>   }
>
>   EAPI void
> -ecore_con_url_fd_set(Ecore_Con_Url *url_obj, int fd)
> +ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      url_con->write_fd = fd;
>   }
>
>   EAPI int
> -ecore_con_url_received_bytes_get(Ecore_Con_Url *url_obj)
> +ecore_con_url_received_bytes_get(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return -1;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return -1;
> +     }
>      return url_con->received;
>   }
>
>   EAPI const Eina_List *
> -ecore_con_url_response_headers_get(Ecore_Con_Url *url_obj)
> +ecore_con_url_response_headers_get(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return NULL;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return NULL;
> +     }
>      return url_con->response_headers;
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_httpauth_set(Ecore_Con_Url *url_obj, const char *username, 
> const char *password, Eina_Bool safe)
> +ecore_con_url_httpauth_set(Ecore_Con_Url *url_con, const char *username, 
> const char *password, Eina_Bool safe)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      CURLcode ret;
>      curl_version_info_data *vers = NULL;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (url_con->dead) return EINA_FALSE;
>      vers = _c->curl_version_info(CURLVERSION_NOW);
>      if (vers->version_num >= 0x071301)
> @@ -782,16 +769,18 @@ ecore_con_url_httpauth_set(Ecore_Con_Url *url_obj, 
> const char *username, const c
>   #define MODE_POST 2
>
>   static Eina_Bool
> -_ecore_con_url_send(Ecore_Con_Url *url_obj, int mode, const void *data, long 
> length, const char *content_type)
> +_ecore_con_url_send(Ecore_Con_Url *url_con, int mode, const void *data, long 
> length, const char *content_type)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      Eina_List *l;
>      const char *s;
>      char tmp[512];
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>
>      if (!url_con->url) return EINA_FALSE;
>      if (url_con->dead) return EINA_FALSE;
> @@ -864,7 +853,7 @@ _ecore_con_url_send(Ecore_Con_Url *url_obj, int mode, 
> const void *data, long len
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_HTTPHEADER,
>                           url_con->headers);
>      url_con->received = 0;
> -   return _ecore_con_url_perform(url_obj);
> +   return _ecore_con_url_perform(url_con);
>   }
>
>   EAPI Eina_Bool
> @@ -880,11 +869,8 @@ ecore_con_url_post(Ecore_Con_Url *url_con, const void 
> *data, long length, const
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const char *filename, const 
> char *user, const char *pass, const char *upload_dir)
> +ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, const char *filename, const 
> char *user, const char *pass, const char *upload_dir)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, MY_CLASS))
> -      return EINA_FALSE;
>      char url[4096];
>      char userpwd[4096];
>      FILE *fd;
> @@ -892,6 +878,11 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const 
> char *filename, const cha
>      CURLcode ret;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>
>      if (url_con->dead) return EINA_FALSE;
>      if (!url_con->url) return EINA_FALSE;
> @@ -918,7 +909,7 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const 
> char *filename, const cha
>        snprintf(url, sizeof(url), "ftp://%s/%s";, url_con->url,
>                 basename(tmp));
>
> -   if (!ecore_con_url_url_set(url_obj, url))
> +   if (!ecore_con_url_url_set(url_con, url))
>        return EINA_FALSE;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_INFILESIZE_LARGE,
>                           (off_t)file_info.st_size);
> @@ -932,73 +923,85 @@ ecore_con_url_ftp_upload(Ecore_Con_Url *url_obj, const 
> char *filename, const cha
>           return EINA_FALSE;
>        }
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_READDATA, fd);
> -   return _ecore_con_url_perform(url_obj);
> +   return _ecore_con_url_perform(url_con);
>   }
>
>   EAPI void
> -ecore_con_url_cookies_init(Ecore_Con_Url *url_obj)
> +ecore_con_url_cookies_init(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEFILE, "");
>   }
>
>   EAPI void
> -ecore_con_url_cookies_ignore_old_session_set(Ecore_Con_Url *url_obj, 
> Eina_Bool ignore)
> +ecore_con_url_cookies_ignore_old_session_set(Ecore_Con_Url *url_con, 
> Eina_Bool ignore)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIESESSION, ignore);
>   }
>
>   EAPI void
> -ecore_con_url_cookies_clear(Ecore_Con_Url *url_obj)
> +ecore_con_url_cookies_clear(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "ALL");
>   }
>
>   EAPI void
> -ecore_con_url_cookies_session_clear(Ecore_Con_Url *url_obj)
> +ecore_con_url_cookies_session_clear(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "SESS");
>   }
>
>   EAPI void
> -ecore_con_url_cookies_file_add(Ecore_Con_Url *url_obj, const char *const 
> file_name)
> +ecore_con_url_cookies_file_add(Ecore_Con_Url *url_con, const char *const 
> file_name)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEFILE, file_name);
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_obj, const char *const 
> cookiejar_file)
> +ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_con, const char *const 
> cookiejar_file)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      CURLcode ret;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (url_con->dead) return EINA_FALSE;
>      ret = _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIEJAR,
>                                 cookiejar_file);
> @@ -1012,36 +1015,42 @@ ecore_con_url_cookies_jar_file_set(Ecore_Con_Url 
> *url_obj, const char *const coo
>   }
>
>   EAPI void
> -ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_obj)
> +ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_COOKIELIST, "FLUSH");
>   }
>
>   EAPI void
> -ecore_con_url_verbose_set(Ecore_Con_Url *url_obj, Eina_Bool verbose)
> +ecore_con_url_verbose_set(Ecore_Con_Url *url_con, Eina_Bool verbose)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (!url_con->url) return;
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_VERBOSE, (int)verbose);
>   }
>
>   EAPI void
> -ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_obj, Eina_Bool use_epsv)
> +ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_con, Eina_Bool use_epsv)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (!url_con->url) return;
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_FTP_USE_EPSV,
> @@ -1061,12 +1070,14 @@ ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url 
> *url_obj, Eina_Bool use_epsv)
>    * @since 1.1.0
>    */
>   EAPI void
> -ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_obj, Eina_Bool verify)
> +ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_con, Eina_Bool verify)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
>      if (!_c) return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (!url_con->url) return;
>      if (url_con->dead) return;
>      _c->curl_easy_setopt(url_con->curl_easy, CURLOPT_SSL_VERIFYPEER,
> @@ -1092,14 +1103,16 @@ ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url 
> *url_obj, Eina_Bool verify)
>    *          are equal to cURL error codes.
>    */
>   EAPI int
> -ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_obj, const char *ca_path)
> +ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_con, const char *ca_path)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return -1;
>      int res = -1;
>
>      if (!_c) return -1;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return -1;
> +     }
>      if (!url_con->url) return -1;
>      if (url_con->dead) return -1;
>      if (ca_path == NULL)
> @@ -1116,14 +1129,16 @@ ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_obj, 
> const char *ca_path)
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_http_version_set(Ecore_Con_Url *url_obj, 
> Ecore_Con_Url_Http_Version version)
> +ecore_con_url_http_version_set(Ecore_Con_Url *url_con, 
> Ecore_Con_Url_Http_Version version)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      int res = -1;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (url_con->dead) return EINA_FALSE;
>      switch (version)
>        {
> @@ -1151,15 +1166,17 @@ ecore_con_url_http_version_set(Ecore_Con_Url 
> *url_obj, Ecore_Con_Url_Http_Versio
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_proxy_set(Ecore_Con_Url *url_obj, const char *proxy)
> +ecore_con_url_proxy_set(Ecore_Con_Url *url_con, const char *proxy)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      int res = -1;
>      curl_version_info_data *vers = NULL;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (!url_con->url) return EINA_FALSE;
>      if (url_con->dead) return EINA_FALSE;
>      if (!proxy)
> @@ -1203,27 +1220,31 @@ ecore_con_url_proxy_set(Ecore_Con_Url *url_obj, const 
> char *proxy)
>   }
>
>   EAPI void
> -ecore_con_url_timeout_set(Ecore_Con_Url *url_obj, double timeout)
> +ecore_con_url_timeout_set(Ecore_Con_Url *url_con, double timeout)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return;
> +     }
>      if (url_con->dead) return;
>      if (!url_con->url || timeout < 0) return;
>      if (url_con->timer) ecore_timer_del(url_con->timer);
>      url_con->timer = ecore_timer_add(timeout, _ecore_con_url_timeout_cb,
> -                                    url_obj);
> +                                    url_con);
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_proxy_username_set(Ecore_Con_Url *url_obj, const char 
> *username)
> +ecore_con_url_proxy_username_set(Ecore_Con_Url *url_con, const char 
> *username)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      int res = -1;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (url_con->dead) return EINA_FALSE;
>      if (!url_con->url) return EINA_FALSE;
>      if ((!username) || (!username[0])) return EINA_FALSE;
> @@ -1244,14 +1265,16 @@ ecore_con_url_proxy_username_set(Ecore_Con_Url 
> *url_obj, const char *username)
>   }
>
>   EAPI Eina_Bool
> -ecore_con_url_proxy_password_set(Ecore_Con_Url *url_obj, const char 
> *password)
> +ecore_con_url_proxy_password_set(Ecore_Con_Url *url_con, const char 
> *password)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return EINA_FALSE;
>      int res = -1;
>
>      if (!_c) return EINA_FALSE;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return EINA_FALSE;
> +     }
>      if (!url_con->url) return EINA_FALSE;
>      if (url_con->dead) return EINA_FALSE;
>      if (!password) return EINA_FALSE;
> @@ -1274,9 +1297,8 @@ ecore_con_url_proxy_password_set(Ecore_Con_Url 
> *url_obj, const char *password)
>    */
>
>   static void
> -_ecore_con_url_status_get(Ecore_Con_Url *url_obj)
> +_ecore_con_url_status_get(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
>      long status = 0;
>
>      if (!_c) return;
> @@ -1289,9 +1311,8 @@ _ecore_con_url_status_get(Ecore_Con_Url *url_obj)
>   }
>
>   static void
> -_ecore_con_url_event_url_complete(Ecore_Con_Url *url_obj, CURLMsg *curlmsg)
> +_ecore_con_url_event_url_complete(Ecore_Con_Url *url_con, CURLMsg *curlmsg)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
>      Ecore_Con_Event_Url_Complete *e;
>      int status = url_con->status;
>
> @@ -1312,7 +1333,7 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url 
> *url_obj, CURLMsg *curlmsg)
>        {
>           if (!status)
>             {
> -             _ecore_con_url_status_get(url_obj);
> +             _ecore_con_url_status_get(url_con);
>                status = url_con->status;
>             }
>        }
> @@ -1322,16 +1343,15 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url 
> *url_obj, CURLMsg *curlmsg)
>               curlmsg->data.result, 
> _c->curl_easy_strerror(curlmsg->data.result));
>        }
>      e->status = status;
> -   e->url_con = url_obj;
> +   e->url_con = url_con;
>      url_con->event_count++;
>      ecore_event_add(ECORE_CON_EVENT_URL_COMPLETE, e,
> -                   (Ecore_End_Cb)_ecore_con_event_url_free, url_obj);
> +                   (Ecore_End_Cb)_ecore_con_event_url_free, url_con);
>   }
>
>   static void
> -_ecore_con_url_multi_remove(Ecore_Con_Url *url_obj)
> +_ecore_con_url_multi_remove(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
>      CURLMcode ret;
>
>      if (!_c) return;
> @@ -1343,16 +1363,15 @@ _ecore_con_url_multi_remove(Ecore_Con_Url *url_obj)
>   static Eina_Bool
>   _ecore_con_url_timeout_cb(void *data)
>   {
> -   Ecore_Con_Url *url_obj = data;
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> +   Ecore_Con_Url *url_con = data;
>      CURLMsg timeout_msg;
>
>      if (!_c) return ECORE_CALLBACK_CANCEL;
> -   if (!url_obj) return ECORE_CALLBACK_CANCEL;
> +   if (!url_con) return ECORE_CALLBACK_CANCEL;
>      if (!url_con->curl_easy) return ECORE_CALLBACK_CANCEL;
>
> -   _ecore_con_url_multi_remove(url_obj);
> -   _url_con_list = eina_list_remove(_url_con_list, url_obj);
> +   _ecore_con_url_multi_remove(url_con);
> +   _url_con_list = eina_list_remove(_url_con_list, url_con);
>
>      _c->curl_slist_free_all(url_con->headers);
>      url_con->headers = NULL;
> @@ -1363,20 +1382,24 @@ _ecore_con_url_timeout_cb(void *data)
>      timeout_msg.easy_handle = NULL;
>      timeout_msg.data.result = CURLE_OPERATION_TIMEDOUT;
>
> -   _ecore_con_url_event_url_complete(url_obj, &timeout_msg);
> +   _ecore_con_url_event_url_complete(url_con, &timeout_msg);
>      return ECORE_CALLBACK_CANCEL;
>   }
>
>   static size_t
>   _ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void 
> *userp)
>   {
> -   Ecore_Con_Url *url_obj = (Ecore_Con_Url *)userp;
> +   Ecore_Con_Url *url_con;
>      Ecore_Con_Event_Url_Data *e;
>      size_t real_size = size * nitems;
>
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return -1;
> +   url_con = (Ecore_Con_Url *)userp;
> +   if (!url_con) return -1;
> +   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
> +     {
> +        ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, __func__);
> +        return -1;
> +     }
>
>      url_con->received += real_size;
>      INF("reading from %s", url_con->url);
> @@ -1387,12 +1410,12 @@ _ecore_con_url_data_cb(void *buffer, size_t size, 
> size_t nitems, void *userp)
>                    (real_size - 1));
>           if (e)
>             {
> -             e->url_con = url_obj;
> +             e->url_con = url_con;
>                e->size = real_size;
>                memcpy(e->data, buffer, real_size);
>                url_con->event_count++;
>                ecore_event_add(ECORE_CON_EVENT_URL_DATA, e,
> -                             (Ecore_End_Cb)_ecore_con_event_url_free, 
> url_obj);
> +                             (Ecore_End_Cb)_ecore_con_event_url_free, 
> url_con);
>             }
>        }
>      else
> @@ -1424,10 +1447,7 @@ static size_t
>   _ecore_con_url_header_cb(void *ptr, size_t size, size_t nitems, void 
> *stream)
>   {
>      size_t real_size = size * nitems;
> -   Ecore_Con_Url *url_obj = stream;
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -   if (!eo_isa(url_obj, ECORE_CON_URL_CLASS))
> -      return 0;
> +   Ecore_Con_Url *url_con = stream;
>
>      char *header = malloc(sizeof(char) * (real_size + 1));
>      if (!header) return real_size;
> @@ -1442,21 +1462,20 @@ static int
>   _ecore_con_url_progress_cb(void *clientp, double dltotal, double dlnow, 
> double ultotal, double ulnow)
>   {
>      Ecore_Con_Event_Url_Progress *e;
> -   Ecore_Con_Url *url_obj = clientp;
> -
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> +   Ecore_Con_Url *url_con;
>
> +   url_con = clientp;
>      e = malloc(sizeof(Ecore_Con_Event_Url_Progress));
>      if (e)
>        {
> -        e->url_con = url_obj;
> +        e->url_con = url_con;
>           e->down.total = dltotal;
>           e->down.now = dlnow;
>           e->up.total = ultotal;
>           e->up.now = ulnow;
>           url_con->event_count++;
>           ecore_event_add(ECORE_CON_EVENT_URL_PROGRESS, e,
> -                        (Ecore_End_Cb)_ecore_con_event_url_free, url_obj);
> +                        (Ecore_End_Cb)_ecore_con_event_url_free, url_con);
>        }
>      return 0;
>   }
> @@ -1490,16 +1509,15 @@ _ecore_con_url_info_read(void)
>      while ((curlmsg = _c->curl_multi_info_read(_c->_curlm, &n_remaining)))
>        {
>           Eina_List *l, *ll;
> -        Ecore_Con_Url *url_obj = NULL;
> +        Ecore_Con_Url *url_con = NULL;
>
>           DBG("Curl message: %d", curlmsg->msg);
>           if (curlmsg->msg == CURLMSG_DONE)
>             {
> -             EINA_LIST_FOREACH_SAFE(_url_con_list, l, ll, url_obj)
> +             EINA_LIST_FOREACH_SAFE(_url_con_list, l, ll, url_con)
>                  {
> -                  Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, 
> MY_CLASS);
>                     if (curlmsg->easy_handle == url_con->curl_easy)
> -                    _ecore_con_url_event_url_complete(url_obj, curlmsg);
> +                    _ecore_con_url_event_url_complete(url_con, curlmsg);
>                  }
>             }
>        }
> @@ -1620,9 +1638,8 @@ _ecore_con_url_timer(void *data EINA_UNUSED)
>   }
>
>   static Eina_Bool
> -_ecore_con_url_perform(Ecore_Con_Url *url_obj)
> +_ecore_con_url_perform(Ecore_Con_Url *url_con)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
>      CURLMcode ret;
>
>      if (!_c) return EINA_FALSE;
> @@ -1634,19 +1651,16 @@ _ecore_con_url_perform(Ecore_Con_Url *url_obj)
>           return EINA_FALSE;
>        }
>      url_con->multi = EINA_TRUE;
> -   _url_con_list = eina_list_append(_url_con_list, url_obj);
> +   _url_con_list = eina_list_append(_url_con_list, url_con);
>      ecore_timer_thaw(_curl_timer);
>      return EINA_TRUE;
>   }
>
>   static void
> -_ecore_con_event_url_free(Ecore_Con_Url *url_obj, void *ev)
> +_ecore_con_event_url_free(Ecore_Con_Url *url_con, void *ev)
>   {
> -   Ecore_Con_Url_Data *url_con = eo_data_scope_get(url_obj, MY_CLASS);
> -
>      free(ev);
>      url_con->event_count--;
> -   if (url_con->dead && (!url_con->event_count)) ecore_con_url_free(url_obj);
> +   if (url_con->dead && (!url_con->event_count)) ecore_con_url_free(url_con);
>   }
>
> -#include "ecore_con_url.eo.c"
> diff --git a/src/lib/ecore_con/ecore_con_url.eo 
> b/src/lib/ecore_con/ecore_con_url.eo
> deleted file mode 100644
> index 743e5f2..0000000
> --- a/src/lib/ecore_con/ecore_con_url.eo
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -class Ecore.Con.Url (Eo.Base) {
> -   eo_prefix: ecore_con_url_obj;
> -   properties {
> -      url {
> -         /**
> -          * Controls the URL to send the request to.
> -          */
> -         set {
> -            return: bool (false); /* true on success, false on error. */
> -         }
> -         get {
> -         }
> -         values {
> -            const(char) *url; /*@ The URL */
> -         }
> -      }
> -   }
> -   implements {
> -        Eo.Base.constructor;
> -        Eo.Base.destructor;
> -        Eo.Base.finalize;
> -   }
> -}
> -
> -/* FIXME: Actually migrate all of the functions. */
>



------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to