diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 9c2c0c3..5f5d78b 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -412,8 +412,8 @@
     public void onRecordCall(SipCall call) {
         try {
 
-            service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
-            Log.w(TAG, "Recording path" + service.getRecordPath());
+//            service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
+            Log.w(TAG, "Recording path " + service.getRecordPath());
             service.toggleRecordingCall(call.getCallId());
 
         } catch (RemoteException e) {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index a7c22ee..7dd4f0e 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -31,8 +31,12 @@
 
 package com.savoirfairelinux.sflphone.fragments;
 
+import java.util.ArrayList;
+
 import android.app.Activity;
 import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.PointF;
@@ -63,6 +67,8 @@
     float BUBBLE_SIZE = 75;
     static final float ATTRACTOR_SIZE = 40;
 
+    public static final int REQUEST_TRANSFER = 10;
+
     private Conference conf;
 
     private CounterTextView callStatusTxt;
@@ -75,7 +81,7 @@
 
     boolean accepted = false;
 
-    private Bitmap hangup_icon, separate_icon;
+    private Bitmap hangup_icon, transfer_icon;
     private Bitmap call_icon;
 
     @Override
@@ -196,6 +202,45 @@
     }
 
     @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        SipCall transfer = null;
+        if (requestCode == REQUEST_TRANSFER) {
+            switch (resultCode) {
+            case 0:
+                Conference c = data.getParcelableExtra("target");
+                transfer = data.getParcelableExtra("transfer");
+                try {
+
+                    mCallbacks.getService().attendedTransfer(transfer.getCallId(), c.getParticipants().get(0).getCallId());
+
+                } catch (RemoteException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                Toast.makeText(getActivity(), "Transfer complete", Toast.LENGTH_LONG).show();
+                break;
+
+            case 1:
+                String to = data.getStringExtra("to_number");
+                transfer = data.getParcelableExtra("transfer");
+                try {
+                    Toast.makeText(getActivity(), "Transferring " + transfer.getContact().getmDisplayName() + " to " + to, Toast.LENGTH_SHORT).show();
+                    mCallbacks.getService().transfer(transfer.getCallId(), to);
+                    mCallbacks.getService().hangUp(transfer.getCallId());
+                } catch (RemoteException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+                break;
+
+            default:
+                break;
+            }
+        }
+    }
+
+    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.frag_call, container, false);
 
@@ -208,7 +253,7 @@
 
         hangup_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_hangup);
         call_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_call);
-        separate_icon = BitmapFactory.decodeResource(getResources(), R.drawable.icon_separate);
+        transfer_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_phones_call_transfer_icon);
 
         // Do nothing here, the view is not initialized yet.
         return rootView;
@@ -237,7 +282,7 @@
         }
 
         model.clearAttractors();
-        model.addAttractor(new Attractor(new PointF(model.width / 2f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
+        model.addAttractor(new Attractor(new PointF(model.width * .2f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
             @Override
             public boolean onBubbleSucked(Bubble b) {
                 Log.w(TAG, "Bubble sucked ! ");
@@ -249,6 +294,8 @@
                             mCallbacks.getService().hangUpConference(conf.getId());
                         else
                             mCallbacks.onCallEnded(conf.getParticipants().get(0));
+
+                        model.clearAttractors();
                     } catch (RemoteException e) {
                         e.printStackTrace();
                     }
@@ -261,6 +308,15 @@
             }
         }, hangup_icon));
 
+        model.addAttractor(new Attractor(new PointF(model.width * .8f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
+            @Override
+            public boolean onBubbleSucked(Bubble b) {
+                Log.w(TAG, "Bubble sucked ! ");
+                makeTransfer(b);
+                return true;
+            }
+        }, transfer_icon));
+
         // if (conf.hasMultipleParticipants()) {
         // model.addAttractor(new Attractor(new PointF(model.width / 1.1f, model.height * .9f), ATTRACTOR_SIZE, new Attractor.Callback() {
         // @Override
@@ -332,6 +388,7 @@
         }
 
         model.clearAttractors();
+
         model.addAttractor(new Attractor(new PointF(model.width / 2f, model.height * .9f), 40, new Attractor.Callback() {
             @Override
             public boolean onBubbleSucked(Bubble b) {
@@ -453,6 +510,19 @@
 
     }
 
+    public void makeTransfer(Bubble contact) {
+        FragmentManager fm = getFragmentManager();
+        TransferDFragment editName = new TransferDFragment();
+
+        Bundle b = new Bundle();
+        b.putParcelableArrayList("calls", new ArrayList<Conference>());
+        b.putParcelable("call_selected", contact.associated_call);
+        editName.setArguments(b);
+        editName.setTargetFragment(this, REQUEST_TRANSFER);
+        editName.show(fm, "");
+
+    }
+
     @Override
     public void surfaceCreated(SurfaceHolder holder) {
     }
@@ -465,5 +535,4 @@
         return view;
 
     }
-
 }
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
index 4b3f516..d31cfb7 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
@@ -489,13 +489,13 @@
             if (call.getParticipants().size() == 1) {
                 ((TextView) convertView.findViewById(R.id.call_title)).setText(call.getParticipants().get(0).getContact().getmDisplayName());
             } else {
-                String tmp = "Conference with "+ call.getParticipants().size()+" participants";
-//                for (SipCall c : call.getParticipants()) {
-//                    tmp += c.getContact().getmDisplayName() + " ";
-//                }
+                String tmp = "Conference with " + call.getParticipants().size() + " participants";
+                // for (SipCall c : call.getParticipants()) {
+                // tmp += c.getContact().getmDisplayName() + " ";
+                // }
                 ((TextView) convertView.findViewById(R.id.call_title)).setText(tmp);
             }
-//            ((TextView) convertView.findViewById(R.id.num_participants)).setText("" + call.getParticipants().size());
+            // ((TextView) convertView.findViewById(R.id.num_participants)).setText("" + call.getParticipants().size());
             ((TextView) convertView.findViewById(R.id.call_status)).setText(call.getState());
             convertView.setOnDragListener(dragListener);
 
diff --git a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
index c410211..904bb1a 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
@@ -67,7 +67,7 @@
         View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_transfer, null);
 
         ArrayList<Conference> calls = getArguments().getParcelableArrayList("calls");
-        final Conference call_selected = getArguments().getParcelable("call_selected");
+        final SipCall call_selected = getArguments().getParcelable("call_selected");
 
         mAdapter = new SimpleCallListAdapter(getActivity(), calls);
         ListView list = (ListView) rootView.findViewById(R.id.concurrent_calls);
@@ -90,7 +90,7 @@
         mEditText.setAdapter(autoCompleteAdapter);
 
         final AlertDialog a = new AlertDialog.Builder(getActivity()).setView(rootView)
-                .setTitle("Transfer " + call_selected.getParticipants().get(0).getContact().getmDisplayName())
+                .setTitle("Transfer " + call_selected.getContact().getmDisplayName())
                 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int whichButton) {
                         
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index a29d8ab..235b680 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -404,6 +404,7 @@
                         ((CallActivity) callback.getActivity()).onRecordCall(expand.associated_call);
                         break;
                     case 3:
+                        callback.makeTransfer(expand);
                         Toast.makeText(getContext(), "Not implemented here", Toast.LENGTH_SHORT).show();
                         break;
                     }
