diff --git a/src/com/savoirfairelinux/sflphone/client/ManagerImpl.java b/src/com/savoirfairelinux/sflphone/client/ManagerImpl.java
index 50fd15a..ab4cb84 100644
--- a/src/com/savoirfairelinux/sflphone/client/ManagerImpl.java
+++ b/src/com/savoirfairelinux/sflphone/client/ManagerImpl.java
@@ -4,17 +4,38 @@
 import android.os.Bundle;
 import android.os.Message;
 import android.util.Log;
+import android.view.animation.AlphaAnimation;
+import android.view.animation.Animation;
+import android.view.animation.LinearInterpolator;
+import android.widget.ImageButton;
+
+import com.savoirfairelinux.sflphone.R;
 
 public class ManagerImpl {
 	
 	private static final String TAG = "ManagerImpl";
 	private static int sipLogLevel = 6;
 	static Handler h;
+	private static ButtonSectionFragment buttonSecFragment;
 	static String appPath;
+	static Animation animation;
+	static SFLPhoneHome uiThread;
+	static ImageButton buttonCall;
 	
 	public ManagerImpl () {}
 	
-	public ManagerImpl(Handler h) {
+	public ManagerImpl(Handler h) {		
+		// Change alpha from fully visible to invisible
+	    animation = new AlphaAnimation(1, 0);
+	    // duration - half a second
+	    animation.setDuration(500);
+	    // do not alter animation rate
+	    animation.setInterpolator(new LinearInterpolator());
+	    // Repeat animation infinitely
+	    animation.setRepeatCount(Animation.INFINITE);
+	    // Reverse
+	    animation.setRepeatMode(Animation.REVERSE);
+	    
 		this.h = h;
 	}
 	
@@ -27,6 +48,34 @@
 		m.setTarget(h);
 		m.sendToTarget();
 	}
+	
+	public static void incomingCall(String accountID, String callID, String from) {
+		Log.i(TAG, "incomingCall(" + accountID + ", " + callID + ", " + from + ")");
+		buttonCall = (ImageButton) buttonSecFragment.getCallButton();
+		
+		// FIXME that's ugly...
+		uiThread.runOnUiThread(new Runnable() {
+		     public void run() {
+		 		try {
+					buttonCall.startAnimation(animation);
+					buttonCall.setImageResource(R.drawable.ic_incomingcall);
+				} catch (Exception e) {
+					Log.w(TAG, "exception in runOnUiThread ", e);
+				}
+		    }
+		});
+
+		uiThread.setIncomingCallID(callID);
+	}
+	
+	// FIXME
+	public static void setButtonFragment(ButtonSectionFragment f) {
+		buttonSecFragment = f;
+	}
+	
+	public static void setActivity(SFLPhoneHome a) {
+		uiThread = a;
+	}
 
 	public static String getAppPath() {
 		return appPath;
@@ -49,4 +98,6 @@
 	public static native void initN(String config_file);
 	public static native void placeCall(String accountID, String callID, String to);
 	public static native void hangUp(String callID);
+	public static native void answerCall(String callID);
+	public static native void refuseCall(String callID);
 }
