diff --git a/README b/README
index 6cbe2c4e7aa92b49d8090d7c61961656ae7d5ded..da21fae2e4252ee02debb5dfbb6f6fb829d75abd 100644
--- a/README
+++ b/README
@@ -25,7 +25,7 @@ Check that following files are executable:
 
 Compile pjsip-android
 $ pushd jni/pjproject-android/
-$ ./configure-android --disable-sound --disable-oss --disable-video --enable-ext-sound --disable-speex-aec --disable-g711-codec --disable-l16-codec --disable-gsm-codec --disable-g722-codec --disable-g7221-codec --disable-speex-codec --disable-ilbc-codec --disable-sdl --disable-ffmpeg --disable-v4l2
+$ ./configure-android 
 
 $ make dep && make
 $ popd
diff --git a/jenkins-sflphone-android.sh b/jenkins-sflphone-android.sh
index a654ea047d6a40f670e540ded95b1ff532e12297..f4bbaf5c17d708da9048df8d4da5d04a68a3eea2 100755
--- a/jenkins-sflphone-android.sh
+++ b/jenkins-sflphone-android.sh
@@ -126,7 +126,7 @@ build_sflphone_android() {
     # android update project --target $VIRTUAL_DEVICE_ID --path $ANDROID_PROJECT_PATH
     echo "----------------- Compile pjandroid stack"
     pushd jni/pjproject-android/
-    ./configure-android --disable-sound --disable-oss --disable-video --enable-ext-sound --disable-speex-aec --disable-g711-codec --disable-l16-codec --disable-gsm-codec --disable-g722-codec --disable-g7221-codec --disable-speex-codec --disable-ilbc-codec --disable-sdl --disable-ffmpeg --disable-v4l
+    ./configure-android 
     make dep && make
     popd
 
diff --git a/jni/Android.mk b/jni/Android.mk
index 38cf96db058815eab249a27495ae4c66b6a17781..12cf04db9a6963146a74db8259ad8d3ca9064351 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -24,6 +24,7 @@ MY_SPEEX=speex
 MY_OPENSSL=openssl
 MY_LIBYAML=libyaml
 MY_LIBEXPAT=libexpat
+MY_OPUS=libopus
 MY_LIBSNDFILE=libsndfile-1.0.25
 MY_JNI_WRAP := $(LOCAL_SRC_PATH)/client/android/callmanager_wrap.cpp
 
@@ -90,13 +91,7 @@ LOCAL_SRC_FILES := \
 		$(LOCAL_SRC_PATH)/sip/sip_utils.cpp \
 		$(LOCAL_SRC_PATH)/sip/sippresence.cpp \
 		$(LOCAL_SRC_PATH)/sip/pres_sub_client.cpp \
-		$(LOCAL_SRC_PATH)/sip/pres_sub_server.cpp \
-		$(LOCAL_SRC_PATH)/scoped_lock.cpp
-
-
-
-
-
+		$(LOCAL_SRC_PATH)/sip/pres_sub_server.cpp
 
 # FIXME
 LOCAL_C_INCLUDES += $(LOCAL_SRC_PATH)/.. \
@@ -144,7 +139,7 @@ LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 
 #-L$(APP_PROJECT_PATH)/obj/local/armeabi \
 
-LOCAL_LDLIBS  += -L$(APP_PROJECT_PATH)/obj/local/armeabi \
+LOCAL_LDLIBS  += -L$(APP_PROJECT_PATH)/obj/local/armeabi-v7a \
 		 -L$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjsip/lib \
 		 -L$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib/lib \
 		 -L$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib-util/lib \
@@ -254,7 +249,7 @@ LOCAL_SRC_FILES := 	$(MY_LIBSNDFILE)/src/mat5.c \
 LOCAL_C_INCLUDES += $(APP_PROJECT_PATH)/jni/$(MY_LIBSNDFILE)/src \
 					$(APP_PROJECT_PATH)/jni/sflphone/daemon/src
 
-LOCAL_LDLIBS  += -L$(APP_PROJECT_PATH)/obj/local/armeabi \
+LOCAL_LDLIBS  += -L$(APP_PROJECT_PATH)/obj/local/armeabi-v7a \
 			
 
 
@@ -262,47 +257,6 @@ LOCAL_LDLIBS := -llog
 
 include $(BUILD_SHARED_LIBRARY)
 
-########### audiortp ##############
-
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := audio_rtp_session.cpp \
-			audio_symmetric_rtp_session.cpp \
-			audio_rtp_record_handler.cpp \
-			audio_rtp_factory.cpp \
-			audio_srtp_session.cpp
-
-# FIXME
-LOCAL_C_INCLUDES += 	$(LOCAL_PATH) \
-			$(LOCAL_AUDIO_PATH)/audiortp \
-			$(APP_PROJECT_PATH)/jni/$(MY_SPEEX)/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
-			$(APP_PROJECT_PATH)/jni/$(MY_CCRTP)/src \
-			$(APP_PROJECT_PATH)/jni/$(MY_LIBSAMPLE)/src \
-			$(APP_PROJECT_PATH)/jni/$(MY_OPENSSL)/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjsip/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib-util/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjmedia/include
-
-LOCAL_MODULE := librtp
-
-LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
-				  -DCCPP_PREFIX \
-				  -DPREFIX=\"$(MY_PREFIX)\" \
-				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
-				  -DHAVE_CONFIG_H \
-				  -std=c++11 -frtti -fpermissive \
-				  -DAPP_NAME=\"audiortp\"
-
-LOCAL_SHARED_LIBRARIES += libccrtp1 libccgnu2
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-MY_COMMONCPP=commoncpp2-1.8.1-android
-MY_CCRTP=ccrtp-1.8.0-android
 
 ############# ulaw ###############
 
@@ -321,6 +275,8 @@ LOCAL_C_INCLUDES += $(LOCAL_CODECS_PATH)/.. \
 
 LOCAL_MODULE := libcodec_ulaw
 
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DPREFIX=\"$(MY_PREFIX)\" \
@@ -347,6 +303,9 @@ LOCAL_C_INCLUDES += $(LOCAL_CODECS_PATH)/.. \
 			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
 
 LOCAL_MODULE := libcodec_alaw
+
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DPREFIX=\"$(MY_PREFIX)\" \
@@ -375,6 +334,39 @@ LOCAL_C_INCLUDES += $(LOCAL_CODECS_PATH)/.. \
 			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
 
 LOCAL_MODULE := libcodec_g722
+
+LOCAL_LDLIBS := -llog
+
+LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
+				  -DCCPP_PREFIX \
+				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
+				  -DPREFIX=\"$(MY_PREFIX)\" \
+				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
+				  -DHAVE_COFIG_H \
+				  -std=c++11 -frtti -fpermissive -fexceptions \
+				  -DAPP_NAME=\"codecfactory\"
+
+include $(BUILD_SHARED_LIBRARY)
+
+############# libgsm ###############
+
+include $(CLEAR_VARS)
+
+
+
+LOCAL_SRC_FILES := $(LOCAL_CODECS_PATH)/gsmcodec.cpp \
+		$(LOCAL_CODECS_PATH)/audiocodec.cpp
+
+LOCAL_C_INCLUDES += $(LOCAL_CODECS_PATH)/.. \
+			$(LOCAL_CODECS_PATH)/../.. \
+			$(LOCAL_CODECS_PATH)/../../.. \
+			$(APP_PROJECT_PATH)/jni/$(MY_CCRTP)/src \
+			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
+
+LOCAL_MODULE := libcodec_gsm
+
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
@@ -386,22 +378,32 @@ LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 
 include $(BUILD_SHARED_LIBRARY)
 
+############# libopus ###############
 
+include $(CLEAR_VARS)
 
-############# opus ###############
+LOCAL_MODULE := libopus
+LOCAL_SRC_FILES := /usr/lib64/libopus.so
 
 include $(CLEAR_VARS)
 
-LOCAL_SRC_FILES := opus.cpp \
-		audiocodec.cpp
+LOCAL_SRC_FILES := $(LOCAL_CODECS_PATH)/opus.cpp \
+		$(LOCAL_CODECS_PATH)/audiocodec.cpp 
 
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. \
 			$(LOCAL_PATH)/../.. \
 			$(LOCAL_PATH)/../../.. \
+			/usr/local/include \
+			$(APP_PROJECT_PATH)/jni/sflphone/daemon/src \
 			$(APP_PROJECT_PATH)/jni/$(MY_CCRTP)/src \
-			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
+			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
 
 LOCAL_MODULE := libcodec_opus
+
+LOCAL_LDLIBS := -llog \
+				-lopus
+				
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
@@ -411,6 +413,8 @@ LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -std=c++11 -frtti -fpermissive -fexceptions \
 				  -DAPP_NAME=\"codecfactory\"
 
+LOCAL_STATIC_LIBRARIES := libopus
+
 include $(BUILD_SHARED_LIBRARY)
 
 ############# speex #################
@@ -493,6 +497,9 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. \
 			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
 
 LOCAL_MODULE := libcodec_speex_nb
+
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
@@ -520,6 +527,9 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. \
 			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
 
 LOCAL_MODULE := libcodec_speex_ub
+
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
@@ -545,6 +555,9 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. \
 			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc 
 
 LOCAL_MODULE := libcodec_speex_wb
+
+LOCAL_LDLIBS := -llog
+
 LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
 				  -DCCPP_PREFIX \
 				  -DCODECS_DIR=\"/usr/lib/sflphone/audio/codec\" \
@@ -593,195 +606,6 @@ include $(BUILD_STATIC_LIBRARY)
 
 
 
-#############  sound  #################
-
-include $(CLEAR_VARS)
-
-# FIXME
-MY_COMMONCPP=commoncpp2-1.8.1-android
-MY_CCRTP=ccrtp-1.8.0-android
-MY_LIBSAMPLE=libsamplerate-0.1.8
-
-LOCAL_SOUND_PATH = sflphone/daemon/src/audio/sound
-
-LOCAL_SRC_FILES := $(LOCAL_SOUND_PATH)/audiofile.cpp \
-		$(LOCAL_SOUND_PATH)/tone.cpp \
-		$(LOCAL_SOUND_PATH)/tonelist.cpp \
-		$(LOCAL_SOUND_PATH)/dtmf.cpp \
-		$(LOCAL_SOUND_PATH)/dtmfgenerator.cpp
-
-# FIXME
-LOCAL_C_INCLUDES += $(LOCAL_SOUND_PATH)/.. \
-					$(LOCAL_SOUND_PATH)/../.. \
-					$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
-					$(APP_PROJECT_PATH)/jni/$(MY_CCRTP)/src \
-					$(APP_PROJECT_PATH)/jni/$(MY_LIBSAMPLE)/src \
-
-LOCAL_MODULE := libsound
-
-LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
-				  -DCCPP_PREFIX \
-				  -DPREFIX=\"$(MY_PREFIX)\" \
-				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
-				  -DHAVE_CONFIG_H \
-				  -std=c++11 -frtti -fpermissive -fexceptions \
-				  -DAPP_NAME=\"sound\"
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-################ history ####################
-
-MY_COMMONCPP=commoncpp2-1.8.1-android
-MY_LIBSAMPLE=libsamplerate-0.1.8
-
-include $(CLEAR_VARS)
-
-LOCAL_HISTORY_PATH = sflphone/daemon/src/history
-
-LOCAL_SRC_FILES := $(LOCAL_HISTORY_PATH)/historyitem.cpp \
-		$(LOCAL_HISTORY_PATH)/history.cpp \
-		$(LOCAL_HISTORY_PATH)/historynamecache.cpp
-
-LOCAL_C_INCLUDES += 	$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
-			$(APP_PROJECT_PATH)/jni/$(MY_LIBSAMPLE)/src
-
-LOCAL_MODULE := libhistory
-
-LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
-				  -DCCPP_PREFIX \
-				  -DPREFIX=\"$(MY_PREFIX)\" \
-				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
-				  -DHAVE_CONFIG_H \
-				  -std=c++11 -frtti -fpermissive -fexceptions \
-				  -DAPP_NAME=\"history\"
-
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-################ hooks ####################
-
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := sflphone/daemon/src/hooks/urlhook.cpp
-
-LOCAL_MODULE := libhooks
-LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
-				  -DCCPP_PREFIX \
-				  -DPREFIX=\"$(MY_PREFIX)\" \
-				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
-				  -DHAVE_CONFIG_H \
-				  -std=c++11 -frtti -fpermissive -fexceptions \
-				  -DAPP_NAME=\"hooks\"
-
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-################ im ####################
-
-MY_PJPROJECT="pjproject-android/android"
-MY_EXPAT="libexpat"
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := sflphone/daemon/src/im/instant_messaging.cpp
-
-# FIXME
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/include-all
-
-
-LOCAL_MODULE := libim
-
-include $(BUILD_STATIC_LIBRARY)
-
-################ sip ####################
-
-include $(CLEAR_VARS)
-
-# FIXME
-MY_PREFIX=/sdcard
-MY_DATADIR=
-MY_PJPROJECT="pjproject-android"
-MY_PJDIR=
-MY_COMMONCPP=commoncpp2-1.8.1-android
-MY_CCRTP=ccrtp-1.8.0-android
-MY_LIBSAMPLE=libsamplerate-0.1.8
-MY_YAML=libyaml
-
-# FIXME
-ifneq ($(BUILD_SDES),)
-libsiplink_la_SOURCES += sdes_negotiator.cpp \
-						 pattern.cpp
-
-libsiplink_la_CXXFLAGS = \
-		@PCRE_LIBS@
-endif
-
-include $(CLEAR_VARS)
-
-LOCAL_SIP_PATH = sflphone/daemon/src/sip
-
-LOCAL_SRC_FILES := \
-		$(LOCAL_SIP_PATH)/sdp.cpp \
-		$(LOCAL_SIP_PATH)/sipaccount.cpp \
-		$(LOCAL_SIP_PATH)/sipcall.cpp \
-		$(LOCAL_SIP_PATH)/sipvoiplink.cpp \
-		$(LOCAL_SIP_PATH)/siptransport.cpp \
-		$(LOCAL_SIP_PATH)/sip_utils.cpp
-
-# FIXME
-LOCAL_C_INCLUDES += 	$(LOCAL_PATH) \	$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/third_party/build/speex \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/third_party/speex/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjmedia/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjsip/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjlib-util/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_PJPROJECT)/pjnath/include \
-			$(APP_PROJECT_PATH)/jni/$(MY_COMMONCPP)/inc \
-			$(APP_PROJECT_PATH)/jni/$(MY_LIBSAMPLE)/src \
-			$(APP_PROJECT_PATH)/jni/$(MY_CCRTP)/src \
-			$(APP_PROJECT_PATH)/jni/$(MY_YAML)/inc \
-			$(LOCAL_PATH)/../../libs/iax2 
-
-#LOCAL_CPP_EXTENSION := .cpp .h
-
-LOCAL_MODULE := libsiplink
-LOCAL_CPPFLAGS += $(NETWORKMANAGER) \
-				  -DPREFIX=\"$(MY_PREFIX)\" \
-				  -DPROGSHAREDIR=\"${MY_DATADIR}/sflphone\" \
-				  -DHAVE_CONFIG_H \
-				  -std=c++11 -frtti -fpermissive \
-				  -DAPP_NAME=\"sip\"
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-################ sdes ####################
-
-
-# FIXME
-MY_PREFIX=/sdcard
-MY_DATADIR=
-MY_PJPROJECT="pjproject-android"
-MY_PJDIR=
-MY_COMMONCPP=commoncpp2-1.8.1-android
-MY_CCRTP=ccrtp-1.8.0-android
-MY_LIBSAMPLE=libsamplerate-0.1.8
-MY_YAML=libyaml
-
-# FIXME
-ifneq ($(BUILD_SDES),)
-libsiplink_la_SOURCES += sdes_negotiator.cpp \
-						 pattern.cpp
-
-libsiplink_la_CXXFLAGS = \
-		@PCRE_LIBS@
-endif
-
-
 ################# common cpp ####################
 
 include $(CLEAR_VARS)
@@ -951,7 +775,7 @@ LOCAL_MODULE     := libccrtp1
 LOCAL_SHARED_LIBRARIES += libccgnu2 \
 						  libssl_shared
 LOCAL_LDLIBS     := -L$(SYSROOT)/usr/lib \
-                    -L$(APP_PROJECT_PATH)/obj/local/armeabi \
+                    -L$(APP_PROJECT_PATH)/obj/local/armeabi-v7a \
 					-lccgnu2 \
 					-lssl \
 					-lcrypto \
diff --git a/jni/Application.mk b/jni/Application.mk
index 8d2289957fa98e9a3096e7bb7c11d37a081e67be..e65c9c1f15ea47741d17a7fc2055c25d55a788bb 100644
--- a/jni/Application.mk
+++ b/jni/Application.mk
@@ -3,6 +3,7 @@ NDK_TOOLCHAIN_VERSION := 4.8
 APP_PLATFORM := android-14
 APP_OPTIM := debug
 APP_STL := gnustl_shared
+APP_ABI := armeabi-v7a
 
 APP_MODULES := libccgnu2
 
@@ -12,10 +13,7 @@ APP_MODULES += libexpat_static
 APP_MODULES += libexpat_shared
 APP_MODULES += libccrtp1
 APP_MODULES += libsndfile
-#APP_MODULES += libcutils-static
-#APP_MODULES += libcutils-shared
 
-# APP_MODULES += libsiplink
 # APP_MODULES += libconfig
 
 # APP_MODULES += libcrypto
@@ -24,21 +22,13 @@ APP_MODULES += libsndfile
 
 APP_MODULES += libspeex
 APP_MODULES += libspeexresampler
-# APP_MODULES += libopensl
-# APP_MODULES += libsound
 APP_MODULES += libcodec_ulaw
 APP_MODULES += libcodec_alaw
 APP_MODULES += libcodec_g722
-#APP_MODULES += libcodec_opus
+#APP_MODULES += libcodec_gsm -> problem of system header
+#APP_MODULES += libcodec_opus -> problem of system header
 #APP_MODULES += libcodec_speex_nb
 #APP_MODULES += libcodec_speex_ub
 #APP_MODULES += libcodec_speex_wb
-#APP_MODULES += libcodecfactory
-# APP_MODULES += librtp
-# APP_MODULES += libaudio
-# APP_MODULES += libhistory
-
-# APP_MODULES += libhooks
 
 APP_MODULES += libsflphone
-# APP_MODULES += sflphoned
diff --git a/jni/pjproject-android/configure-android b/jni/pjproject-android/configure-android
index d749b681c49fa9e3edf80d03637d7bd6175932e0..09553c7c64f3a40b72087f8b8babd3f7c081034c 100755
--- a/jni/pjproject-android/configure-android
+++ b/jni/pjproject-android/configure-android
@@ -72,7 +72,11 @@ case $HOST_OS in
   CYGWIN*|*_NT-*) BUILD_MACHINE="windows";;
 esac
 
-ANDROID_TC="${ANDROID_NDK_ROOT}/toolchains/${TC_DIR}-4.4.3/prebuilt/${BUILD_MACHINE}"
+case $(uname -p) in
+	x86_64) BUILD_MACHINE="linux-x86_64"
+esac
+
+ANDROID_TC="${ANDROID_NDK_ROOT}/toolchains/${TC_DIR}-4.8/prebuilt/${BUILD_MACHINE}"
 if test ! -d ${ANDROID_TC}; then
   echo "$F error: unable to find directory ${ANDROID_TC} in Android NDK"
   exit 1
diff --git a/jni/sflphone b/jni/sflphone
index f238ce9cecfd0a74eca6f6b2bf4aa4167ae4e345..fafcd55edb27ef5a69b89737728faf570d89e28e 160000
--- a/jni/sflphone
+++ b/jni/sflphone
@@ -1 +1 @@
-Subproject commit f238ce9cecfd0a74eca6f6b2bf4aa4167ae4e345
+Subproject commit fafcd55edb27ef5a69b89737728faf570d89e28e
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
index 43b4544a920dfd3e9ee0de222879ad034e274a8c..957079fdb926d27a527121e191247aa6b7f0aebc 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
@@ -24,9 +24,6 @@ package com.savoirfairelinux.sflphone.account;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import android.provider.MediaStore;
-import android.provider.MediaStore.Audio.Media;
-
 public interface AccountDetail {
 
     public static class PreferenceEntry {
@@ -76,5 +73,4 @@ public interface AccountDetail {
 
     public void setDetailString(String key, String newValue);
 
-    public boolean getDetailBoolean();
 }
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailAdvanced.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailAdvanced.java
index 1829ff2982ba1d3e21ffaa26d578e53cc87faea3..ca6376742b2645a25f3e5800274614b858c8910f 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailAdvanced.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailAdvanced.java
@@ -21,16 +21,12 @@
  */
 package com.savoirfairelinux.sflphone.account;
 
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountDetail;
-import com.savoirfairelinux.sflphone.account.AccountDetail.PreferenceEntry;
+import java.util.ArrayList;
+import java.util.HashMap;
 
 import android.util.Log;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashMap;
+import com.savoirfairelinux.sflphone.R;
 
 public class AccountDetailAdvanced implements AccountDetail {
 
@@ -56,11 +52,11 @@ public class AccountDetailAdvanced implements AccountDetail {
     public static final String CONFIG_PUBLISHED_ADDRESS = "Account.publishedAddress";
     
     // FIXME: Why isn't this 5060?
-    public static final String CONFIG_DEFAULT_LOCAL_PORT = "5070";
-    public static final String CONFIG_DEFAULT_PUBLISHED_PORT = "5070";
+    public static final String CONFIG_DEFAULT_LOCAL_PORT = "5060";
+    public static final String CONFIG_DEFAULT_PUBLISHED_PORT = "5060";
     public static final String CONFIG_DEFAULT_PUBLISHED_SAMEAS_LOCAL = "true";
     // FIXME: Why isn't this "default"?
-    public static final String CONFIG_DEFAULT_INTERFACE = "wlan0";
+    public static final String CONFIG_DEFAULT_INTERFACE = "default";
     public static final String CONFIG_DEFAULT_REGISTRATION_EXPIRE = "60";
 
     public static final String CONFIG_DISPLAY_NAME = "Account.displayName";
@@ -180,9 +176,4 @@ public class AccountDetailAdvanced implements AccountDetail {
         
     }
 
-    public boolean getDetailBoolean()
-    {
-        return true;
-    }
-
 }
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
index 4f9137d426ec84174ceebd5bbde40bac12d5ae1c..b2766edb308823b2ad172b78cb8506ad6e1aa38e 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
@@ -21,16 +21,12 @@
  */
 package com.savoirfairelinux.sflphone.account;
 
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountDetail;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
+import java.util.ArrayList;
+import java.util.HashMap;
 
 import android.util.Log;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashMap;
+import com.savoirfairelinux.sflphone.R;
 
 public class AccountDetailBasic implements AccountDetail {
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailSrtp.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailSrtp.java
index a193f8511a29167575d5d316f0215627f38ea98a..7b82d7248ab081fca1d2b3a27a3d73c7fbb5ce25 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailSrtp.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailSrtp.java
@@ -21,17 +21,12 @@
  */
 package com.savoirfairelinux.sflphone.account;
 
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountDetail;
-import com.savoirfairelinux.sflphone.account.AccountDetail.PreferenceEntry;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
+import java.util.ArrayList;
+import java.util.HashMap;
 
 import android.util.Log;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashMap;
+import com.savoirfairelinux.sflphone.R;
 
 public class AccountDetailSrtp implements AccountDetail{
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailTls.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailTls.java
index 0794749530e62063fb3d0a47e8c71662f83357c0..8d535f702d9c6601789d7ff81b56fb08a0dc431f 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailTls.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailTls.java
@@ -27,7 +27,6 @@ import java.util.HashMap;
 import android.util.Log;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
 
 public class AccountDetailTls implements AccountDetail {
 
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
index fb6c5cc406d6a545f75f9d805abbf1f537b332ac..da015699b88c311737f7bde67a9e23555701cc09 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
@@ -25,11 +25,10 @@ import java.util.ArrayList;
 import java.util.HashMap;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
 import com.savoirfairelinux.sflphone.service.StringMap;
 
 public class AccountDetailsHandler {
-    private static final String TAG = "AccountDetailsHandler";
+//    private static final String TAG = "AccountDetailsHandler";
 
     public static class PreferenceEntry {
         public String mKey;
diff --git a/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java b/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
index ddce5bea03888d6324ed71f1d723669c8f676df1..76ff36b63d968dc211a66d9619657fb6bf42fa52 100644
--- a/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
@@ -69,6 +69,8 @@ public class CallDetailsHandler {
         if (smap.has_key(key)) {
             return smap.get(key);
         } else {
+            if(key.contentEquals(ServiceConstants.call.TIMESTAMP_START))
+            return ""+System.currentTimeMillis() / 1000;
             return "";
         }
     }
diff --git a/src/com/savoirfairelinux/sflphone/account/HistoryHandler.java b/src/com/savoirfairelinux/sflphone/account/HistoryHandler.java
index 130ef317dac69534ad110e8d461147b5e68ee349..993b0b5df09b4b3220d72df8b59785d58cdcb359 100644
--- a/src/com/savoirfairelinux/sflphone/account/HistoryHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/HistoryHandler.java
@@ -3,14 +3,12 @@ package com.savoirfairelinux.sflphone.account;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import android.util.Log;
-
 import com.savoirfairelinux.sflphone.service.ServiceConstants;
-import com.savoirfairelinux.sflphone.service.VectMap;
 import com.savoirfairelinux.sflphone.service.StringMap;
+import com.savoirfairelinux.sflphone.service.VectMap;
 
 public class HistoryHandler {
-    private static final String TAG = HistoryHandler.class.getSimpleName();
+//    private static final String TAG = HistoryHandler.class.getSimpleName();
 
     private static String tryToGet(StringMap smap, String key) {
         if (smap.has_key(key)) {
diff --git a/src/com/savoirfairelinux/sflphone/adapters/AccountSelectionAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/AccountSelectionAdapter.java
index c794cdb89a6124982f898b8d49f92acb8f232602..ae5d8a58622058874804b670ab5fcba0d269b054 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/AccountSelectionAdapter.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/AccountSelectionAdapter.java
@@ -14,7 +14,6 @@ import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.model.Account;
-import com.savoirfairelinux.sflphone.service.ISipService;
 
 public class AccountSelectionAdapter extends BaseAdapter {
 
diff --git a/src/com/savoirfairelinux/sflphone/adapters/ContactPictureLoader.java b/src/com/savoirfairelinux/sflphone/adapters/ContactPictureTask.java
similarity index 95%
rename from src/com/savoirfairelinux/sflphone/adapters/ContactPictureLoader.java
rename to src/com/savoirfairelinux/sflphone/adapters/ContactPictureTask.java
index 591d0c36fa961a0b40b3dfa7a7853477d04d309a..d1d5f6bb74e532aa4075beb6d7bc382b17263c87 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/ContactPictureLoader.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/ContactPictureTask.java
@@ -50,13 +50,13 @@ import android.widget.ImageView;
 
 import com.savoirfairelinux.sflphone.R;
 
-public class ContactPictureLoader implements Runnable {
+public class ContactPictureTask implements Runnable {
     private ImageView view;
     private long cid;
     private ContentResolver cr;
-    private final String TAG = ContactPictureLoader.class.getSimpleName();
+//    private final String TAG = ContactPictureTask.class.getSimpleName();
 
-    public ContactPictureLoader(Context context, ImageView element, long contact_id) {
+    public ContactPictureTask(Context context, ImageView element, long contact_id) {
         cid = contact_id;
         cr = context.getContentResolver();
         view = element;
diff --git a/src/com/savoirfairelinux/sflphone/adapters/ContactsAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/ContactsAdapter.java
index b27c85ff7f265620bccadb33b96aa686282bdd27..a47b20af1fa78e0b9a1c505958a13200ebb776ae 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/ContactsAdapter.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/ContactsAdapter.java
@@ -9,7 +9,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import android.content.Context;
-import android.util.Log;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -30,7 +29,7 @@ public class ContactsAdapter extends BaseAdapter implements SectionIndexer {
     HashMap<String, Integer> alphaIndexer;
     String[] sections;
 
-    private static final String TAG = ContactsAdapter.class.getSimpleName();
+//    private static final String TAG = ContactsAdapter.class.getSimpleName();
 
     public ContactsAdapter(Context context) {
         super();
@@ -79,7 +78,7 @@ public class ContactsAdapter extends BaseAdapter implements SectionIndexer {
         ((TextView) convertView.findViewById(R.id.display_name)).setText(item.getmDisplayName());
         ImageView photo_view = (ImageView) convertView.findViewById(R.id.photo);
 
-        infos_fetcher.execute(new ContactPictureLoader(mContext, photo_view, item.getId()));
+        infos_fetcher.execute(new ContactPictureTask(mContext, photo_view, item.getId()));
 
         return convertView;
     }
@@ -206,14 +205,14 @@ public class ContactsAdapter extends BaseAdapter implements SectionIndexer {
         }
 
         private class Section {
-            public int startPosition;
+//            public int startPosition;
             public int number;
             public String header;
 
             public Section(int i, int headersCount, String str) {
 //                Log.i(TAG, "Creating section");
 
-                startPosition = i + headersCount;
+//                startPosition = i + headersCount;
                 number = headersCount;
                 header = str;
 
diff --git a/src/com/savoirfairelinux/sflphone/adapters/SectionsPagerAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/SectionsPagerAdapter.java
index f58ad4f2678657495468b02b95eb84d08f8a4279..903eac62fb1a1849d1a912f79ccc3ac908c27774 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/SectionsPagerAdapter.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/SectionsPagerAdapter.java
@@ -1,19 +1,19 @@
 package com.savoirfairelinux.sflphone.adapters;
 
 import java.util.ArrayList;
+import java.util.Locale;
 
 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.content.Context;
-import android.os.Bundle;
 import android.os.RemoteException;
 import android.support.v13.app.FragmentStatePagerAdapter;
 import android.util.Log;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.fragments.HomeFragment;
 import com.savoirfairelinux.sflphone.fragments.DialingFragment;
 import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
+import com.savoirfairelinux.sflphone.fragments.HomeFragment;
 
 public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
     
@@ -73,11 +73,11 @@ public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
     public CharSequence getPageTitle(int position) {
         switch (position) {
         case 0:
-            return mContext.getString(R.string.title_section0).toUpperCase();
+            return mContext.getString(R.string.title_section0).toUpperCase(Locale.getDefault());
         case 1:
-            return mContext.getString(R.string.title_section1).toUpperCase();
+            return mContext.getString(R.string.title_section1).toUpperCase(Locale.getDefault());
         case 2:
-            return mContext.getString(R.string.title_section2).toUpperCase();
+            return mContext.getString(R.string.title_section2).toUpperCase(Locale.getDefault());
         default:
             Log.e(TAG, "getPageTitle: unknown tab position " + position);
             break;
diff --git a/src/com/savoirfairelinux/sflphone/adapters/StarredContactsAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/StarredContactsAdapter.java
index c09dfe7bbf279a01c71d3186b57a56cfa10b607d..70ac20eec111738c442ce660446940e4a1c6e78a 100644
--- a/src/com/savoirfairelinux/sflphone/adapters/StarredContactsAdapter.java
+++ b/src/com/savoirfairelinux/sflphone/adapters/StarredContactsAdapter.java
@@ -52,7 +52,7 @@ public class StarredContactsAdapter extends BaseAdapter {
     private ArrayList<CallContact> dataset;
     Context mContext;
 
-    private static final String TAG = ContactsAdapter.class.getSimpleName();
+//    private static final String TAG = ContactsAdapter.class.getSimpleName();
 
     public StarredContactsAdapter(Context context) {
         super();
@@ -100,7 +100,7 @@ public class StarredContactsAdapter extends BaseAdapter {
         ((TextView) v.findViewById(R.id.display_name)).setText(item.getmDisplayName());
         ImageView photo_view = (ImageView) v.findViewById(R.id.photo);
 
-        infos_fetcher.execute(new ContactPictureLoader(mContext, photo_view, item.getId()));
+        infos_fetcher.execute(new ContactPictureTask(mContext, photo_view, item.getId()));
 
         return v;
     }
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index ded776c39927b43908ab6c95c29f7ab7f765c1ef..2a99448957cf17860aa9031f146dd3b477c33044 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -82,6 +82,7 @@ public class AccountPreferenceActivity extends PreferenceActivity {
 
     private boolean isDifferent = false;
 
+    @SuppressWarnings("deprecation")
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountWizard.java b/src/com/savoirfairelinux/sflphone/client/AccountWizard.java
index 6218ab98ec10e666f844da79db8bfda18cb23e07..129a6bf9519d3a58fd35cf30ff797e775878db8e 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountWizard.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountWizard.java
@@ -32,16 +32,14 @@
 package com.savoirfairelinux.sflphone.client;
 
 import java.util.ArrayList;
+import java.util.Locale;
 
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.FragmentManager;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.ServiceConnection;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.support.v13.app.FragmentStatePagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.util.Log;
@@ -50,8 +48,6 @@ import android.view.MenuItem;
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.fragments.AccountCreationFragment;
 import com.savoirfairelinux.sflphone.interfaces.AccountsInterface;
-import com.savoirfairelinux.sflphone.service.ISipService;
-import com.savoirfairelinux.sflphone.service.SipService;
 
 public class AccountWizard extends Activity implements AccountsInterface {
     static final String TAG = "AccountWizard";
@@ -59,7 +55,6 @@ public class AccountWizard extends Activity implements AccountsInterface {
     public static final int ACCOUNT_CREATED = Activity.RESULT_OK;
 
     ViewPager mViewPager;
-    private ISipService service;
     private SectionsPagerAdapter mSectionsPagerAdapter;
 
     @Override
@@ -71,40 +66,17 @@ public class AccountWizard extends Activity implements AccountsInterface {
 
         getActionBar().setDisplayHomeAsUpEnabled(true);
         getActionBar().setHomeButtonEnabled(true);
-
-        Intent intent = new Intent(this, SipService.class);
-        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+        mSectionsPagerAdapter = new SectionsPagerAdapter(AccountWizard.this, getFragmentManager());
+        mViewPager.setAdapter(mSectionsPagerAdapter);
 
     }
 
     /* activity finishes itself or is being killed by the system */
     @Override
     protected void onDestroy() {
-        /* stop the service, if no other bound user, no need to check if it is running */
-
-        unbindService(mConnection);
-
         super.onDestroy();
     }
 
-    /** Defines callbacks for service binding, passed to bindService() */
-    private ServiceConnection mConnection = new ServiceConnection() {
-
-        @Override
-        public void onServiceConnected(ComponentName className, IBinder binder) {
-            service = ISipService.Stub.asInterface(binder);
-
-            mSectionsPagerAdapter = new SectionsPagerAdapter(AccountWizard.this, getFragmentManager());
-            mViewPager.setAdapter(mSectionsPagerAdapter);
-
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName arg0) {
-
-        }
-    };
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
@@ -178,7 +150,7 @@ public class AccountWizard extends Activity implements AccountsInterface {
         public CharSequence getPageTitle(int position) {
             switch (position) {
             case 0:
-                return mContext.getString(R.string.title_section0).toUpperCase();
+                return mContext.getString(R.string.title_section0).toUpperCase(Locale.getDefault());
             default:
                 Log.e(TAG, "getPageTitle: unknown tab position " + position);
                 break;
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index d66fecd9e2a0bf7832fb60fd8191619d0206ab03..d92b53f54ca9d7971869b6c22ace97f1b12eda2b 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -33,7 +33,6 @@
 
 package com.savoirfairelinux.sflphone.client;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 
 import android.app.Activity;
@@ -264,6 +263,7 @@ public class CallActivity extends Activity implements CallInterface, CallFragmen
 
     }
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     public void processCallStateChangedSignal(String callID, String newState) {
         /*
          * Bundle bundle = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate"); String callID = bundle.getString("CallID"); String
@@ -285,8 +285,8 @@ public class CallActivity extends Activity implements CallInterface, CallFragmen
             }
 
             if (callMap.size() > 0) {
-                ArrayList<SipCall> calls = new ArrayList<SipCall>(callMap.values());
-                HashMap<String, String> details = (HashMap<String, String>) service.getCallDetails(calls.get(0).getCallId());
+//                ArrayList<SipCall> calls = new ArrayList<SipCall>(callMap.values());
+//                HashMap<String, String> details = (HashMap<String, String>) service.getCallDetails(calls.get(0).getCallId());
 
             }
         } catch (RemoteException e) {
@@ -317,6 +317,7 @@ public class CallActivity extends Activity implements CallInterface, CallFragmen
         if (mCurrentCallFragment == null || mCurrentCallFragment.getBubbleView() == null) {
             return;
         }
+        mHandler.removeCallbacks(mUpdateTimeTask);
         mCurrentCallFragment.getBubbleView().stopThread();
         mCurrentCallFragment = new CallFragment();
         Bundle b = new Bundle();
@@ -492,6 +493,7 @@ public class CallActivity extends Activity implements CallInterface, CallFragmen
 
     @Override
     public void replaceCurrentCallDisplayed() {
+        mHandler.removeCallbacks(mUpdateTimeTask);
         mCurrentCallFragment.getBubbleView().stopThread();
         getFragmentManager().beginTransaction().remove(mCurrentCallFragment).commit();
         mCurrentCallFragment = null;
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index 53a6c6e7fa6d8ec0eab9881e30325df6ad39ef00..43c450efb58e4629c856c2a821551388e1ef65e3 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -200,13 +200,6 @@ public class SFLPhoneHomeActivity extends Activity implements DialingFragment.Ca
         // mTabHost = (TabHost) findViewById(android.R.id.tabhost);
         mDrawerLayout.setDrawerListener(mDrawerToggle);
 
-        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
-            @Override
-            public void onPageSelected(int position) {
-                // mTabHost.setCurrentTab(position);
-            }
-        });
-
     }
 
     @Override
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index f657702adfe593bbca51efb3b6073d23eb6c58b4..86f21fc4c4467db297f4eef9c691bc468bb5ce02 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -31,6 +31,8 @@
 
 package com.savoirfairelinux.sflphone.client;
 
+import java.util.Locale;
+
 import android.app.ActionBar;
 import android.app.Activity;
 import android.app.Fragment;
@@ -49,7 +51,6 @@ import android.view.MenuItem;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.fragments.AccountManagementFragment;
-import com.savoirfairelinux.sflphone.fragments.AudioManagementFragment;
 import com.savoirfairelinux.sflphone.service.ISipService;
 import com.savoirfairelinux.sflphone.service.SipService;
 
@@ -198,7 +199,7 @@ public class SFLPhonePreferenceActivity extends Activity implements ActionBar.Ta
         public CharSequence getPageTitle(int position) {
             switch (position) {
             case 0:
-                return getString(R.string.preference_section1).toUpperCase();
+                return getString(R.string.preference_section1).toUpperCase(Locale.getDefault());
 //            case 1:
 //                return getString(R.string.preference_section2).toUpperCase();
             default:
diff --git a/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java b/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
index b48844c13ac09138bdfb33dfee02c81eb42bcaee..9faabd0b0e26f4aed187f7cd9af4b67db76a4e40 100644
--- a/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
+++ b/src/com/savoirfairelinux/sflphone/client/ZoomOutPageTransformer.java
@@ -5,11 +5,11 @@ import android.view.View;
 
 public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
     private static final float MIN_ALPHA = .6f;
-    private final float scalingStart;
+//    private final float scalingStart;
 
     public ZoomOutPageTransformer(float scalingStart) {
         super();
-        this.scalingStart = 1 - scalingStart;
+//        this.scalingStart = 1 - scalingStart;
     }
 
     @Override
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
index af758effa32073593dc7112c4a0871e8f877afc8..5103e4bd93db34962cb6fa68e98d256b655c4630 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountCreationFragment.java
@@ -3,10 +3,7 @@ package com.savoirfairelinux.sflphone.fragments;
 import java.util.HashMap;
 
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
 import android.app.Fragment;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
index cf96191b7c1ab63490a380709efe9088aa7df82e..c3c692abf1bfc6f3135ffb872086fe1222013f5c 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
@@ -136,6 +136,7 @@ public class AccountManagementFragment extends PreferenceFragment {
         Log.i(TAG, "onDestroy");
     }
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         switch (requestCode) {
@@ -295,6 +296,7 @@ public class AccountManagementFragment extends PreferenceFragment {
         startActivityForResult(intent, ACCOUNT_EDIT_REQUEST);
     }
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     private ArrayList<String> getAccountList() {
         ArrayList<String> accountList = null;
         try {
@@ -309,6 +311,7 @@ public class AccountManagementFragment extends PreferenceFragment {
         return accountList;
     }
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     private HashMap<String, String> getAccountDetails(String accountID) {
         HashMap<String, String> accountDetails = null;
         try {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
index 022cf2ea5e6ab0429dac18de3b1bac56b1c6a5bc..32b7db45fa87c55e897ec6570b6b3a4915517f7e 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
@@ -35,15 +35,13 @@ package com.savoirfairelinux.sflphone.fragments;
 import android.app.Activity;
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.graphics.Typeface;
+import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
-import android.os.Bundle;
-import android.util.Log;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewGroup;
@@ -219,10 +217,6 @@ public class AudioManagementFragment extends PreferenceFragment
                 seekbar.setMax( max );
         }
 
-        private SeekBar getSeekBar () {
-            return seekbar;
-        }
-
         @Override
         protected Object onGetDefaultValue (TypedArray a, int index) {
             return a.getInt( index, progress );
@@ -253,7 +247,7 @@ public class AudioManagementFragment extends PreferenceFragment
             else {
                 setProgress( seekBar.getProgress() );
 
-                OnPreferenceChangeListener listener = getOnPreferenceChangeListener();
+//                OnPreferenceChangeListener listener = getOnPreferenceChangeListener();
                 //if (listener instanceof AbstractSeekBarListener)
                 ////        setSummary( ((AbstractSeekBarListener)listener).toSummary( seekBar.getProgress() ) );
             }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
index 5d011db6611ec0da143f6f617d2cdd6838b7fc55..1c3f2031a0116fd85f64cac35e6826c3c5808be9 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
@@ -39,7 +39,6 @@ import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.ClipData;
 import android.content.ClipData.Item;
 import android.content.Context;
@@ -206,6 +205,7 @@ public class CallListFragment extends Fragment {
 
     OnDragListener dragListener = new OnDragListener() {
 
+        @SuppressWarnings("deprecation") // deprecated in API 16....
         @Override
         public boolean onDrag(View v, DragEvent event) {
             switch (event.getAction()) {
@@ -292,9 +292,9 @@ public class CallListFragment extends Fragment {
         }
     };
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     public void update() {
         try {
-            Log.w(TAG, "Updating");
             HashMap<String, SipCall> list = (HashMap<String, SipCall>) mCallbacks.getService().getCallList();
 
             // Toast.makeText(getActivity(), "Calls: " + list.size(), Toast.LENGTH_SHORT).show();
@@ -304,7 +304,6 @@ public class CallListFragment extends Fragment {
 
             ArrayList<SipCall> simple_calls = new ArrayList<SipCall>(list.values());
             for (SipCall call : simple_calls) {
-                Log.w(TAG, "SimpleCall:" + call.getCallId());
                 Conference confOne = new Conference("-1");
                 confOne.getParticipants().add(call);
                 conferences.add(confOne);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ConferenceDFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ConferenceDFragment.java
index 0316d3379c62ca06d96bc1e350e1e7ba90e2a9f3..6f4cabda70816c3996bee2d05b2a68fdd15efd66 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ConferenceDFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ConferenceDFragment.java
@@ -24,9 +24,7 @@ import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.loaders.ContactsLoader;
-import com.savoirfairelinux.sflphone.model.CallContact;
 import com.savoirfairelinux.sflphone.model.Conference;
-import com.savoirfairelinux.sflphone.model.SipCall;
 
 public class ConferenceDFragment extends DialogFragment implements LoaderManager.LoaderCallbacks<Bundle> {
 
@@ -105,7 +103,7 @@ public class ConferenceDFragment extends DialogFragment implements LoaderManager
     @Override
     public void onLoadFinished(Loader<Bundle> loader, Bundle data) {
 
-        ArrayList<CallContact> tmp = data.getParcelableArrayList("Contacts");
+//        ArrayList<CallContact> tmp = data.getParcelableArrayList("Contacts");
 
     }
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
index da42955014197cfd06e48ca37862842f401674b4..b9d38a6e2ceef6a2f96b0119b152631612bc536a 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
@@ -31,38 +31,32 @@
 
 package com.savoirfairelinux.sflphone.fragments;
 
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
 import android.app.Fragment;
 import android.content.Context;
-import android.os.Build;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.ImageButton;
-import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.service.ISipService;
 import com.savoirfairelinux.sflphone.views.ClearableEditText;
 
-public class DialingFragment extends Fragment {
+public class DialingFragment extends Fragment implements OnTouchListener {
 
     private static final String TAG = DialingFragment.class.getSimpleName();
-    public static final String ARG_SECTION_NUMBER = "section_number";
 
     ClearableEditText textField;
-    // private AccountSelectionSpinner mAccountSelectionSpinner;
-
-    // AccountSelectionAdapter mAdapter;
     private Callbacks mCallbacks = sDummyCallbacks;
-    // private Spinner spinnerAccounts;
 
     /**
      * A dummy implementation of the {@link Callbacks} interface that does nothing. Used only when this fragment is not attached to an activity.
@@ -110,8 +104,9 @@ public class DialingFragment extends Fragment {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
+        Log.i(TAG,"Create History Fragment");
         super.onCreate(savedInstanceState);
-        // mAdapter = new HistoryAdapter(getActivity(),new ArrayList<HashMap<String, String>>());
+
     }
 
     @Override
@@ -132,6 +127,8 @@ public class DialingFragment extends Fragment {
             }
         });
 
+        inflatedView.setOnTouchListener(this);
+
         ((Button) inflatedView.findViewById(R.id.alphabetic_keyboard)).setOnClickListener(new OnClickListener() {
 
             @Override
@@ -146,16 +143,14 @@ public class DialingFragment extends Fragment {
 
             @Override
             public void onClick(View v) {
-                textField.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
+                textField.setInputType(EditorInfo.TYPE_CLASS_PHONE);
                 InputMethodManager lManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                 lManager.showSoftInput(textField.getEdit_text(), 0);
             }
         });
-
         return inflatedView;
     }
 
-
     @Override
     public void onResume() {
         super.onResume();
@@ -164,7 +159,15 @@ public class DialingFragment extends Fragment {
     @Override
     public void onStart() {
         super.onStart();
+    }
 
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        InputMethodManager lManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+        lManager.showSoftInput(textField.getEdit_text(), 0);
+        textField.setError(null);
+        lManager.hideSoftInputFromWindow(textField.getWindowToken(), 0);
+        return false;
     }
 
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
index 766e0672330d85b1532c8b4cde2bb7b4a96dd7d7..480b122999e37d3a2b812b238e60679c60a7a847 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
@@ -56,7 +56,7 @@ import android.widget.ListView;
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.ContactPictureLoader;
+import com.savoirfairelinux.sflphone.adapters.ContactPictureTask;
 import com.savoirfairelinux.sflphone.loaders.HistoryLoader;
 import com.savoirfairelinux.sflphone.loaders.LoaderConstants;
 import com.savoirfairelinux.sflphone.model.HistoryEntry;
@@ -65,7 +65,6 @@ import com.savoirfairelinux.sflphone.service.ISipService;
 public class HistoryFragment extends ListFragment implements LoaderCallbacks<ArrayList<HistoryEntry>> {
 
     private static final String TAG = HistoryFragment.class.getSimpleName();
-    public static final String ARG_SECTION_NUMBER = "section_number";
 
     HistoryAdapter mAdapter;
     private Callbacks mCallbacks = sDummyCallbacks;
@@ -217,7 +216,7 @@ public class HistoryFragment extends ListFragment implements LoaderCallbacks<Arr
             // SipCall call = (SipCall) mCallList.values().toArray()[position];
             entryView.displayName.setText(dataset.get(pos).getContact().getmDisplayName());
 
-            infos_fetcher.execute(new ContactPictureLoader(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
+            infos_fetcher.execute(new ContactPictureTask(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
 
             entryView.missed.setText("Missed:" + dataset.get(pos).getMissed_sum());
             entryView.incoming.setText("In:" + dataset.get(pos).getIncoming_sum());
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
index 33228ae0e0246b8b8e5741097bd63657cacfcecd..cb6cb0b292ed2d6336f65a917b055d2f0499d3ed 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
@@ -30,14 +30,10 @@
  */
 package com.savoirfairelinux.sflphone.fragments;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
-import java.util.Locale;
 import java.util.Observable;
 import java.util.Observer;
-import java.util.TimeZone;
 
 import android.app.Activity;
 import android.app.Fragment;
@@ -46,7 +42,6 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.os.SystemClock;
-import android.text.format.DateFormat;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -69,7 +64,6 @@ public class HomeFragment extends Fragment {
     private static final String TAG = HomeFragment.class.getSimpleName();
 
     private Callbacks mCallbacks = sDummyCallbacks;
-    // Button access_calls;
     TextView nb_calls, nb_confs;
     CallListAdapter confs_adapter;
     CallTimer timer;
@@ -149,6 +143,7 @@ public class HomeFragment extends Fragment {
 
     }
 
+    @SuppressWarnings("unchecked") // No proper solution with HashMap runtime cast
     public void updateLists() throws RemoteException {
         HashMap<String, SipCall> calls = (HashMap<String, SipCall>) mCallbacks.getService().getCallList();
         HashMap<String, Conference> confs = (HashMap<String, Conference>) mCallbacks.getService().getConferenceList();
diff --git a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
index 7339a91373493e1a48b593d1e4347431c9b5e040..14bee67b4479f97b814c502c710dd668894605ec 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/MenuFragment.java
@@ -51,7 +51,6 @@ import android.widget.ArrayAdapter;
 import android.widget.ListView;
 import android.widget.RadioButton;
 import android.widget.Spinner;
-import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.adapters.AccountSelectionAdapter;
diff --git a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
index c77949a4bb5780ac6e5bb965003601f2dee79b8b..a90fe22a92117de4ee0803898af59dccadca94a1 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
@@ -36,7 +36,6 @@ import android.widget.Toast;
 
 import com.savoirfairelinux.sflphone.R;
 import com.savoirfairelinux.sflphone.loaders.ContactsLoader;
-import com.savoirfairelinux.sflphone.model.CallContact;
 import com.savoirfairelinux.sflphone.model.Conference;
 import com.savoirfairelinux.sflphone.model.SipCall;
 
@@ -151,7 +150,7 @@ public class TransferDFragment extends DialogFragment implements LoaderManager.L
     @Override
     public void onLoadFinished(Loader<Bundle> loader, Bundle data) {
 
-        ArrayList<CallContact> tmp = data.getParcelableArrayList("Contacts");
+//        ArrayList<CallContact> tmp = data.getParcelableArrayList("Contacts");
 
     }
 
@@ -165,7 +164,7 @@ public class TransferDFragment extends DialogFragment implements LoaderManager.L
 
         private LayoutInflater mInflater;
         private Geocoder mGeocoder;
-        private StringBuilder mSb = new StringBuilder();
+//        private StringBuilder mSb = new StringBuilder();
 
         public AutoCompleteAdapter(final Context context) {
             super(context, -1);
diff --git a/src/com/savoirfairelinux/sflphone/loaders/AccountsLoader.java b/src/com/savoirfairelinux/sflphone/loaders/AccountsLoader.java
index 375a039b88bc3e0d8e929dcec86542ce29dab277..40af292798241ec386d24869e3fdef2539982b18 100644
--- a/src/com/savoirfairelinux/sflphone/loaders/AccountsLoader.java
+++ b/src/com/savoirfairelinux/sflphone/loaders/AccountsLoader.java
@@ -22,6 +22,7 @@ public class AccountsLoader extends AsyncTaskLoader<ArrayList<Account>> {
         service = ref;
     }
 
+    @SuppressWarnings("unchecked") // Hashmap runtime cast 
     @Override
     public ArrayList<Account> loadInBackground() {
 
diff --git a/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java b/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
index 719dcde8a0fdb1537693bf2bd046ea5ff6bd876c..f0b48d1ed2e19554bce731e25d5f622d9ed292c6 100644
--- a/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
+++ b/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
@@ -34,6 +34,7 @@ public class HistoryLoader extends AsyncTaskLoader<ArrayList<HistoryEntry>> {
         service = isip;
     }
 
+    @SuppressWarnings("unchecked") // Hashmap runtime cast 
     @Override
     public ArrayList<HistoryEntry> loadInBackground() {
 
diff --git a/src/com/savoirfairelinux/sflphone/model/Account.java b/src/com/savoirfairelinux/sflphone/model/Account.java
index 0ed30fa31e745316b8855321c610f87d8e84999f..2f76d29ee14fdc5353f60a97143999022724e500 100644
--- a/src/com/savoirfairelinux/sflphone/model/Account.java
+++ b/src/com/savoirfairelinux/sflphone/model/Account.java
@@ -40,7 +40,6 @@ import com.savoirfairelinux.sflphone.account.AccountDetailAdvanced;
 import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
 import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
 import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
 
 public class Account implements Parcelable {
 
diff --git a/src/com/savoirfairelinux/sflphone/model/Bubble.java b/src/com/savoirfairelinux/sflphone/model/Bubble.java
index db6133712b457682f43442dbb8e1f4c07ccecb53..f71a385d308645a7212b0b6b58230d4de9fd5d51 100644
--- a/src/com/savoirfairelinux/sflphone/model/Bubble.java
+++ b/src/com/savoirfairelinux/sflphone/model/Bubble.java
@@ -13,7 +13,7 @@ import android.graphics.RectF;
 import android.util.Log;
 
 import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.ContactPictureLoader;
+import com.savoirfairelinux.sflphone.adapters.ContactPictureTask;
 
 public class Bubble {
 
@@ -45,7 +45,7 @@ public class Bubble {
 
         Bitmap photo = null;
         if (call.getContact().getPhoto_id() > 0) {
-            photo = ContactPictureLoader.loadContactPhoto(context.getContentResolver(), call.getContact().getId());
+            photo = ContactPictureTask.loadContactPhoto(context.getContentResolver(), call.getContact().getId());
         } else {
             photo = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_contact_picture);
         }
diff --git a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
index 2032e6e05c7a0dd97b45b08dffbbf4ca83c695e0..b02b84fb858d1d48ccea9811ae46cd5ea5168168 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
@@ -36,6 +36,7 @@ public class BubbleModel
 	private float density = 1.f;
 
 	public BubbleModel(float screen_density) {
+	    Log.d(TAG, "Creating BubbleModel");
 		this.density = screen_density;
 		attractor_dist_suck = ATTRACTOR_DIST_SUCK*density;
 		bubble_max_speed = BUBBLE_MAX_SPEED*density;
diff --git a/src/com/savoirfairelinux/sflphone/model/CallContact.java b/src/com/savoirfairelinux/sflphone/model/CallContact.java
index bc720a015819741a4f9041bd7b5a1fc2416e1a0b..6f7b834491bc0e4c17eb1251362a1b89c2fd9ae1 100644
--- a/src/com/savoirfairelinux/sflphone/model/CallContact.java
+++ b/src/com/savoirfairelinux/sflphone/model/CallContact.java
@@ -211,7 +211,7 @@ public class CallContact implements Parcelable {
         isUser = in.readByte() == 1 ? true : false;
     }
 
-    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+    public static final Parcelable.Creator<CallContact> CREATOR = new Parcelable.Creator<CallContact>() {
         @Override
         public CallContact createFromParcel(Parcel in) {
             return new CallContact(in);
diff --git a/src/com/savoirfairelinux/sflphone/model/Conference.java b/src/com/savoirfairelinux/sflphone/model/Conference.java
index c242b4d7bc1edb5316a669aa12460ab9011f2a45..ef0a2c833837bbfef748245298d14cdf54c7f70c 100644
--- a/src/com/savoirfairelinux/sflphone/model/Conference.java
+++ b/src/com/savoirfairelinux/sflphone/model/Conference.java
@@ -1,9 +1,6 @@
 package com.savoirfairelinux.sflphone.model;
 
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
 
 import android.os.Parcel;
 import android.os.Parcelable;
diff --git a/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java b/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
index 64769b884886c5525d8d78fd9a538d6c30e6792d..60b91f3b1484adda1eb71dd68bf96f98bc110e0d 100644
--- a/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/receivers/IncomingReceiver.java
@@ -12,16 +12,14 @@ import android.os.Bundle;
 import android.os.RemoteException;
 import android.util.Log;
 
-import com.savoirfairelinux.sflphone.account.CallDetailsHandler;
 import com.savoirfairelinux.sflphone.model.CallContact;
 import com.savoirfairelinux.sflphone.model.Conference;
 import com.savoirfairelinux.sflphone.model.SipCall;
 import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
 import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
-import com.savoirfairelinux.sflphone.service.ServiceConstants;
 import com.savoirfairelinux.sflphone.service.ISipService.Stub;
+import com.savoirfairelinux.sflphone.service.ServiceConstants;
 import com.savoirfairelinux.sflphone.service.SipService;
-import com.savoirfairelinux.sflphone.service.StringMap;
 
 public class IncomingReceiver extends BroadcastReceiver {
 
@@ -35,6 +33,7 @@ public class IncomingReceiver extends BroadcastReceiver {
         mBinder = bind;
     }
 
+    @SuppressWarnings("unchecked") // Hashmap runtime cast 
     @Override
     public void onReceive(Context context, Intent intent) {
 
diff --git a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
index 48e1440b1cba613831870816b5a9ce6371ddb85c..4b96ae146046389aea6012267b88302c82cdb523 100644
--- a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
+++ b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
@@ -25,10 +25,9 @@ package com.savoirfairelinux.sflphone.service;
 import android.content.Context;
 import android.content.Intent;
 import android.support.v4.content.LocalBroadcastManager;
-import android.util.Log;
 
 public class ConfigurationManagerCallback extends ConfigurationCallback {
-    private static final String TAG = "ConfigurationManagerCallback";
+//    private static final String TAG = "ConfigurationManagerCallback";
     private Context mContext;
 
     static public final String SIGNAL_NAME = "signal-name";
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index fb78acb233b27a5482ffc136df500d189d8f7b00..217568d0e3fea02d34da3ec6b7e014322416607d 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -536,6 +536,7 @@ public class SipService extends Service {
             return nativemap;
         }
 
+        @SuppressWarnings("unchecked") // Hashmap runtime cast 
         @Override
         public void setAccountDetails(final String accountId, final Map map) {
             HashMap<String, String> nativemap = (HashMap<String, String>) map;
@@ -584,6 +585,7 @@ public class SipService extends Service {
             return nativemap;
         }
 
+        @SuppressWarnings("unchecked") // Hashmap runtime cast 
         @Override
         public String addAccount(Map map) {
             class AddAccount extends SipRunnableWithReturn {
diff --git a/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java b/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
index 78c1e9c19e807e8c03a871431d009c4905ad85f2..8a21b7ce0d8d3b0896f8c242cf19bbe8b8cb96c8 100644
--- a/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
+++ b/src/com/savoirfairelinux/sflphone/views/CustomSlidingDrawer.java
@@ -1,5 +1,7 @@
 package com.savoirfairelinux.sflphone.views;
 
+import java.lang.ref.WeakReference;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -10,7 +12,6 @@ import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.view.SoundEffectConstants;
@@ -80,7 +81,7 @@ public class CustomSlidingDrawer extends ViewGroup {
 
     private static final int EXPANDED_FULL_OPEN = -10001;
     private static final int COLLAPSED_FULL_CLOSED = -10002;
-    private static final String TAG = CustomSlidingDrawer.class.getSimpleName();
+//    private static final String TAG = CustomSlidingDrawer.class.getSimpleName();
 
     private final int mHandleId;
     private final int mContentId;
@@ -107,7 +108,7 @@ public class CustomSlidingDrawer extends ViewGroup {
     private OnDrawerCloseListener mOnDrawerCloseListener;
     private OnDrawerScrollListener mOnDrawerScrollListener;
 
-    private final Handler mHandler = new SlidingHandler();
+    private SlidingHandler mHandler;
     private float mAnimatedAcceleration;
     private float mAnimatedVelocity;
     private float mAnimationPosition;
@@ -186,7 +187,9 @@ public class CustomSlidingDrawer extends ViewGroup {
     public CustomSlidingDrawer(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomSlidingDrawer, defStyle, 0);
-
+        
+        mHandler = new SlidingHandler(this);
+        
         int orientation = a.getInt(R.styleable.CustomSlidingDrawer_orientation, ORIENTATION_VERTICAL);
         mVertical = orientation == ORIENTATION_VERTICAL;
         mBottomOffset = (int) a.getDimension(R.styleable.CustomSlidingDrawer_bottomOffset, 0.0f);
@@ -966,11 +969,19 @@ public class CustomSlidingDrawer extends ViewGroup {
         this.mTrackHandle = mTrackHandle;
     }
 
-    private class SlidingHandler extends Handler {
+    private static class SlidingHandler extends Handler {
+        
+        WeakReference<CustomSlidingDrawer> ref;
+        
+        public SlidingHandler(CustomSlidingDrawer r){
+            ref = new WeakReference<CustomSlidingDrawer>(r);
+        }
+
         public void handleMessage(Message m) {
             switch (m.what) {
             case MSG_ANIMATE:
-                doAnimation();
+                if(ref.get() != null)
+                    ref.get().doAnimation();
                 break;
             }
         }
diff --git a/src/com/savoirfairelinux/sflphone/views/TACGridView.java b/src/com/savoirfairelinux/sflphone/views/TACGridView.java
index 52987040e957256eca3beef0ce632f430abfd91d..85a1e3afd1be0a49c6d2d7eb54bd645cc4f9f217 100644
--- a/src/com/savoirfairelinux/sflphone/views/TACGridView.java
+++ b/src/com/savoirfairelinux/sflphone/views/TACGridView.java
@@ -2,7 +2,6 @@ package com.savoirfairelinux.sflphone.views;
 
 import android.content.Context;
 import android.util.AttributeSet;
-import android.view.View.MeasureSpec;
 import android.widget.GridView;