diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c
index a926096378c3ac909d6b448437bd6ad45ce88125..f52d713cd58b2372c15943c0452bb4af3984d954 100644
--- a/coreapi/linphonecall.c
+++ b/coreapi/linphonecall.c
@@ -473,6 +473,20 @@ int linphone_call_get_duration(const LinphoneCall *call){
 	return time(NULL)-call->media_start_time;
 }
 
+/**
+ * Returns the call object this call is replacing, if any.
+ * Call replacement can occur during call transfers.
+ * By default, the core automatically terminates the replaced call and accept the new one.
+ * This function allows the application to know whether a new incoming call is a one that replaces another one.
+**/
+LinphoneCall *linphone_call_get_replaced_call(LinphoneCall *call){
+	SalOp *op=sal_call_get_replaces(call->op);
+	if (op){
+		return (LinphoneCall*)sal_op_get_user_pointer(op);
+	}
+	return NULL;
+}
+
 /**
  * Indicate whether camera input should be sent to remote end.
 **/
@@ -505,21 +519,21 @@ int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file){
 }
 
 /**
- *
+ * Returns TRUE if camera pictures are sent to the remote party.
 **/
 bool_t linphone_call_camera_enabled (const LinphoneCall *call){
 	return call->camera_active;
 }
 
 /**
- * 
+ * Enable video stream.
 **/
 void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabled){
 	cp->has_video=enabled;
 }
 
 /**
- *
+ * Returns whether video is enabled.
 **/
 bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp){
 	return cp->has_video;
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index 72bc5e2d0bba04fa2cd7dfa51e4534ba20df133b..db2548a8474ad33b904722e7c30c0abd24d726e0 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -49,6 +49,8 @@ static void toggle_video_preview(LinphoneCore *lc, bool_t val);
 #define LOCAL_RING "rings/oldphone.wav"
 /* same for remote ring (ringback)*/
 #define REMOTE_RING "ringback.wav"
+#define HOLD_MUSIC "rings/toy-mono.wav"
+
 
 extern SalCallbacks linphone_sal_callbacks;
 
@@ -452,6 +454,8 @@ static void sound_config_read(LinphoneCore *lc)
 		tmpbuf=PACKAGE_SOUND_DIR "/" REMOTE_RING;
 	}
 	linphone_core_set_ringback(lc,tmpbuf);
+
+	linphone_core_set_play_file(lc,lp_config_get_string(lc->config,"sound","hold_music",PACKAGE_SOUND_DIR "/" HOLD_MUSIC));
 	check_sound_device(lc);
 	lc->sound_conf.latency=0;
 
@@ -3696,7 +3700,7 @@ void sip_config_uninit(LinphoneCore *lc)
 	linphone_proxy_config_write_to_config_file(lc->config,NULL,i);
 
 	for (i=0;i<20;i++){
-		linphone_core_iterate(lc);
+		sal_iterate(lc->sal);
 #ifndef WIN32
 		usleep(100000);
 #else
diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h
index 2170459e51c799d9418ea94f18c28e710581d5c1..82709208d587ef5145621a8211a494bfa08e3fec 100644
--- a/coreapi/linphonecore.h
+++ b/coreapi/linphonecore.h
@@ -245,6 +245,7 @@ void linphone_call_unref(LinphoneCall *call);
 LinphoneCallLog *linphone_call_get_call_log(const LinphoneCall *call);
 const char *linphone_call_get_refer_to(const LinphoneCall *call);
 bool_t linphone_call_has_transfer_pending(const LinphoneCall *call);
+LinphoneCall *linphone_call_get_replaced_call(LinphoneCall *call);
 int linphone_call_get_duration(const LinphoneCall *call);
 const LinphoneCallParams * linphone_call_get_current_params(const LinphoneCall *call);
 void linphone_call_enable_camera(LinphoneCall *lc, bool_t enabled);
diff --git a/share/Makefile.am b/share/Makefile.am
index 6def02724e4903ed74404323f3af58977c4992d5..a96607b711a00ae4d186eb156f72bbcaa7a3c777 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -8,7 +8,7 @@ LINPHONE_RINGS=rings/orig.wav \
 				rings/oldphone-mono-30s.caf \
 				rings/rock.wav \
 				rings/bigben.wav \
-				rings/toy.wav \
+				rings/toy-mono.wav \
 				rings/sweet.wav \
 				rings/synth.wav \
 				rings/tapping.wav
diff --git a/share/rings/toy-mono.wav b/share/rings/toy-mono.wav
new file mode 100644
index 0000000000000000000000000000000000000000..a6e0093a589c29973a04ddbff2ff2c65c874eff5
Binary files /dev/null and b/share/rings/toy-mono.wav differ
diff --git a/share/rings/toy.wav b/share/rings/toy.wav
deleted file mode 100644
index 7a51984929908a2ad0dd3825c119cab915b9c5a8..0000000000000000000000000000000000000000
Binary files a/share/rings/toy.wav and /dev/null differ