diff --git a/src/Call.h b/src/Call.h
index 76f31180ab3dd5e484417c620b32d7f561197597..8e475dbcdfdcd9c665168835413d4b42fabd370f 100644
--- a/src/Call.h
+++ b/src/Call.h
@@ -162,7 +162,7 @@ public:
    void setTransferNumber(const QString& number);
    void setCallNumber(const QString& number);
    
-   //Mutotors
+   //Mutators
    void appendText(const QString& str);
    void backspaceItemText();
    void changeCurrentState(call_state newState);
diff --git a/src/CallModel.h b/src/CallModel.h
index 44f76fd3ef8a7aa2b156330f7d46920bbc826c47..608af376d043a0d15c16ba95e663e4afe460ac99 100644
--- a/src/CallModel.h
+++ b/src/CallModel.h
@@ -101,12 +101,14 @@ class LIB_EXPORT CallModel : public CallModelBase {
       virtual void initContact ( ContactBackend* be );
 
       //Call related
-      virtual Call*  addCall         ( Call* call                , Call* parent =0    );
-      Call*          addDialingCall  ( const QString& peerName="", QString account="" );
-      Call*          addIncomingCall ( const QString& callId                          );
-      Call*          addRingingCall  ( const QString& callId                          );
-      static QString generateCallId  (                                                );
-      void           removeCall      ( Call* call                                     );
+      virtual Call*  addCall          ( Call* call                , Call* parent =0    );
+      Call*          addDialingCall   ( const QString& peerName="", QString account="" );
+      Call*          addIncomingCall  ( const QString& callId                          );
+      Call*          addRingingCall   ( const QString& callId                          );
+      static QString generateCallId   (                                                );
+      void           removeCall       ( Call* call                                     );
+      void           attendedTransfer ( Call* toTransfer           , Call* target      );
+      void           transfer         ( Call* toTransfer           , QString target    );
       
       virtual bool selectItem(Call* item) { Q_UNUSED(item); return false;}
 
diff --git a/src/CallModel.hpp b/src/CallModel.hpp
index 11e51f83365c3e28ecc81f754890ba8df3b07321..f7dd95f067be69b528400af9cb6e1faaefd787c7 100644
--- a/src/CallModel.hpp
+++ b/src/CallModel.hpp
@@ -263,6 +263,25 @@ template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::
    }
 }
 
+///Transfer "toTransfer" to "target" and wait to see it it succeeded
+template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::attendedTransfer(Call* toTransfer, Call* target)
+{
+   CallManagerInterface& callManager = CallManagerInterfaceSingleton::getInstance();
+   callManager.attendedTransfer(toTransfer->getCallId(),target->getCallId());
+
+   //TODO [Daemon] Implement this correctly
+   toTransfer->changeCurrentState(CALL_STATE_OVER);
+   target->changeCurrentState(CALL_STATE_OVER);
+}
+
+///Transfer this call to  "target" number
+template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::transfer(Call* toTransfer, QString target)
+{
+   qDebug() << "Transferring call " << target;
+   toTransfer->setTransferNumber(target);
+   toTransfer->actionPerformed(CALL_ACTION_ACCEPT);
+   toTransfer->changeCurrentState(CALL_STATE_OVER);
+}
 
 /*****************************************************************************
  *                                                                           *