diff --git a/src/org/sflphone/client/CallActivity.java b/src/org/sflphone/client/CallActivity.java
index fd70dc37db9c35f6d3e452d86d35cccecabe982f..62abc3ed3af42320a1e0bd156e1bd4900ea03b5d 100644
--- a/src/org/sflphone/client/CallActivity.java
+++ b/src/org/sflphone/client/CallActivity.java
@@ -35,6 +35,8 @@ package org.sflphone.client;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import org.sflphone.R;
 import org.sflphone.fragments.CallFragment;
@@ -353,10 +355,16 @@ public class CallActivity extends Activity implements CallInterface, IMFragment.
     public void terminateCall() {
         mHandler.removeCallbacks(mUpdateTimeTask);
         mCurrentCallFragment.getBubbleView().stopThread();
-        // getFragmentManager().beginTransaction().remove(mCurrentCallFragment).commit();
-        // mCurrentCallFragment = null;
-        finish();
-
+        TimerTask quit = new TimerTask() {
+            
+            @Override
+            public void run() {
+                finish();
+            }
+        };
+        
+        new Timer().schedule(quit, 2000);
+        
     }
 
     @Override
diff --git a/src/org/sflphone/fragments/CallFragment.java b/src/org/sflphone/fragments/CallFragment.java
index 5c982378e41acc330030f025c75bc728d7e6d412..f3f8fb214e603e5912639eddcffccbed19153ed8 100644
--- a/src/org/sflphone/fragments/CallFragment.java
+++ b/src/org/sflphone/fragments/CallFragment.java
@@ -388,7 +388,7 @@ public class CallFragment extends Fragment implements Callback {
     }
 
     public void changeCallState(String callID, String newState) {
-        Log.w(TAG, "Call :" + callID + " " + newState);
+        Log.i(TAG, "Call :" + callID + " " + newState);
         if (newState.contentEquals("FAILURE")) {
             try {
                 mCallbacks.getService().hangUp(callID);
@@ -396,6 +396,9 @@ public class CallFragment extends Fragment implements Callback {
                 e.printStackTrace();
             }
         }
+        if(conf == null){
+            return;
+        }
         for (int i = 0; i < conf.getParticipants().size(); ++i) {
             if (callID.equals(conf.getParticipants().get(i).getCallId())) {
                 if (newState.contentEquals("HUNGUP")) {
@@ -417,6 +420,7 @@ public class CallFragment extends Fragment implements Callback {
         }
 
         if (conf.getParticipants().size() == 0) {
+            callStatusTxt.setText(newState);
             mCallbacks.terminateCall();
         }
     }
@@ -492,7 +496,8 @@ public class CallFragment extends Fragment implements Callback {
 
     public void updateTime() {
         long duration = System.currentTimeMillis() / 1000 - this.conf.getParticipants().get(0).getTimestamp_start();
-        callStatusTxt.setText(String.format("%d:%02d:%02d", duration / 3600, duration % 3600 / 60, duration % 60));
+        if(conf.isOnGoing())
+            callStatusTxt.setText(String.format("%d:%02d:%02d", duration / 3600, duration % 3600 / 60, duration % 60));
     }
 
     public Conference getConference() {