diff --git a/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c b/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c
index 954fea5cb4..f385e9ca16 100644
--- a/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c
+++ b/src/mod/endpoints/mod_skypiax/asterisk/chan_skypiax.c
@@ -1880,40 +1880,31 @@ int new_inbound_channel(private_t * p)
 #endif
   return 0;
 }
+int remote_party_is_ringing(private_t * p)
+{
+  if (p->owner) {
+    ast_queue_control(p->owner, AST_CONTROL_RINGING);
+  }
+
+  return 0;
+}
+int remote_party_is_early_media(private_t * p)
+{
+  if (p->owner) {
+    ast_queue_control(p->owner, AST_CONTROL_RINGING);
+  }
+
+  return 0;
+}
+
 
 int outbound_channel_answered(private_t * p)
 {
-#ifdef NOTDEF
-  switch_core_session_t *session = NULL;
-  switch_channel_t *channel = NULL;
-
-  if (strlen(tech_pvt->session_uuid_str)) {
-    session = switch_core_session_locate(tech_pvt->session_uuid_str);
-  } else {
-    ERRORA("No session???\n", SKYPIAX_P_LOG);
-  }
-  if (session) {
-    channel = switch_core_session_get_channel(session);
-  } else {
-    ERRORA("No session???\n", SKYPIAX_P_LOG);
-  }
-  if (channel) {
-    switch_channel_mark_answered(channel);
-    //DEBUGA_SKYPE("skype_call: %s, answered\n", SKYPIAX_P_LOG, id);
-  } else {
-    ERRORA("No channel???\n", SKYPIAX_P_LOG);
-  }
-
-  switch_core_session_rwunlock(session);
-
-#endif
 
   if (p->owner) {
     ast_queue_control(p->owner, AST_CONTROL_ANSWER);
   }
 
-  NOTICA("HERE!\n", SKYPIAX_P_LOG);
-
   return 0;
 }
 void *skypiax_do_tcp_srv_thread(void *obj)
diff --git a/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h b/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h
index f23774b9b0..9ae73954b2 100644
--- a/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h
+++ b/src/mod/endpoints/mod_skypiax/asterisk/skypiax.h
@@ -414,6 +414,8 @@ int skypiax_pipe_write(int pipe, short *buf, int howmany);
 #endif /* WIN32 */
 int skypiax_close_socket(unsigned int fd);
 private_t *find_available_skypiax_interface(void);
+int remote_party_is_ringing(private_t * tech_pvt);
+int remote_party_is_early_media(private_t * tech_pvt);
 #define		SKYPIAX_STATE_DOWN		AST_STATE_DOWN
 #define		SKYPIAX_STATE_RING		AST_STATE_RING
 #define		SKYPIAX_STATE_DIALING	AST_STATE_DIALING
diff --git a/src/mod/endpoints/mod_skypiax/mod_skypiax.c b/src/mod/endpoints/mod_skypiax/mod_skypiax.c
index c3e08301a1..a2bc942ca4 100644
--- a/src/mod/endpoints/mod_skypiax/mod_skypiax.c
+++ b/src/mod/endpoints/mod_skypiax/mod_skypiax.c
@@ -1169,6 +1169,62 @@ int new_inbound_channel(private_t * tech_pvt)
   return 0;
 }
 
+int remote_party_is_ringing(private_t * tech_pvt)
+{
+  switch_core_session_t *session = NULL;
+  switch_channel_t *channel = NULL;
+
+  if (strlen(tech_pvt->session_uuid_str)) {
+    session = switch_core_session_locate(tech_pvt->session_uuid_str);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (session) {
+    channel = switch_core_session_get_channel(session);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (channel) {
+    switch_channel_mark_ring_ready(channel);
+    DEBUGA_SKYPE("skype_call: REMOTE PARTY RINGING\n", SKYPIAX_P_LOG);
+  } else {
+    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+  }
+
+  switch_core_session_rwunlock(session);
+
+  return 0;
+}
+
+
+int remote_party_is_early_media(private_t * tech_pvt)
+{
+  switch_core_session_t *session = NULL;
+  switch_channel_t *channel = NULL;
+
+  if (strlen(tech_pvt->session_uuid_str)) {
+    session = switch_core_session_locate(tech_pvt->session_uuid_str);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (session) {
+    channel = switch_core_session_get_channel(session);
+    switch_core_session_add_stream(session, NULL);
+  } else {
+    ERRORA("No session???\n", SKYPIAX_P_LOG);
+  }
+  if (channel) {
+    //switch_channel_mark_pre_answered(channel);
+    NOTICA("skype_call: REMOTE PARTY EARLY MEDIA, we will pass you the audio, just the code is not yet written :-)\n", SKYPIAX_P_LOG);
+  } else {
+    ERRORA("No channel???\n", SKYPIAX_P_LOG);
+  }
+
+  switch_core_session_rwunlock(session);
+
+  return 0;
+}
+
 int outbound_channel_answered(private_t * tech_pvt)
 {
   switch_core_session_t *session = NULL;
diff --git a/src/mod/endpoints/mod_skypiax/skypiax.h b/src/mod/endpoints/mod_skypiax/skypiax.h
index 849382c344..5fee026a6a 100644
--- a/src/mod/endpoints/mod_skypiax/skypiax.h
+++ b/src/mod/endpoints/mod_skypiax/skypiax.h
@@ -268,3 +268,5 @@ int skypiax_pipe_write(int pipe, short *buf, int howmany);
 #endif /* WIN32 */
 int skypiax_close_socket(unsigned int fd);
 private_t *find_available_skypiax_interface(void);
+int remote_party_is_ringing(private_t * tech_pvt);
+int remote_party_is_early_media(private_t * tech_pvt);
diff --git a/src/mod/endpoints/mod_skypiax/skypiax_protocol.c b/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
index 2aff9d1ccf..dc9868581a 100644
--- a/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
+++ b/src/mod/endpoints/mod_skypiax/skypiax_protocol.c
@@ -267,12 +267,14 @@ int skypiax_signaling_read(private_t * tech_pvt)
               strncpy(tech_pvt->skype_call_id, id, sizeof(tech_pvt->skype_call_id) - 1);
               DEBUGA_SKYPE("Our remote party in skype_call %s is RINGING\n",
                            SKYPIAX_P_LOG, id);
+              remote_party_is_ringing(tech_pvt);
             }
           } else if (!strcasecmp(value, "EARLYMEDIA")) {
             tech_pvt->skype_callflow = CALLFLOW_STATUS_EARLYMEDIA;
             tech_pvt->interface_state = SKYPIAX_STATE_DIALING;
-            DEBUGA_SKYPE("Our remote party in skype_call %s is EARLYMEDIA\n",
+            NOTICA("Our remote party in skype_call %s is EARLYMEDIA\n",
                          SKYPIAX_P_LOG, id);
+              remote_party_is_early_media(tech_pvt);
           } else if (!strcasecmp(value, "MISSED")) {
             DEBUGA_SKYPE("We missed skype_call %s\n", SKYPIAX_P_LOG, id);
           } else if (!strcasecmp(value, "FINISHED")) {