diff --git a/sflphone_kde/Account.cpp b/sflphone_kde/Account.cpp
index d0ca036b12842152dc0ce171d34b955520021643..1247e392adaf1062886456772cf1f04c7a2db97c 100644
--- a/sflphone_kde/Account.cpp
+++ b/sflphone_kde/Account.cpp
@@ -64,19 +64,15 @@ void Account::initAccountItem()
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	item = new QListWidgetItem();
 	item->setSizeHint(QSize(140,25));
-	//item->setTextAlignment(Qt::AlignCenter);
 	item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled|Qt::ItemIsEnabled);
 	bool enabled = getAccountDetail(*(new QString(ACCOUNT_ENABLED))) == ACCOUNT_ENABLED_TRUE;
-	//item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
 	setItemText(getAccountDetail(*(new QString(ACCOUNT_ALIAS))));
 	itemWidget = new QWidget();
 	QCheckBox * checkbox = new QCheckBox(itemWidget);
 	checkbox->setObjectName(QString(ACCOUNT_ITEM_CHECKBOX));
 	checkbox->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
-	//QLabel* name = new QLabel(getAccountDetail(*(new QString(ACCOUNT_ALIAS))), itemWidget);
-	//QLabel* name = new QLabel("", itemWidget);
 	KLed * led = new KLed(itemWidget);
-	led->setObjectName("led");
+	led->setObjectName(QString(ACCOUNT_ITEM_LED));
 	led->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
 	if(! isNew() && enabled)
 	{
@@ -97,12 +93,9 @@ void Account::initAccountItem()
 	QHBoxLayout* hlayout = new QHBoxLayout();
 	hlayout->setContentsMargins(0,0,0,0);
 	hlayout->addWidget(checkbox);
-	//hlayout->addWidget(name);
 	hlayout->addWidget(led);
 	itemWidget->setLayoutDirection(Qt::LeftToRight);
 	itemWidget->setLayout(hlayout);
-	//itemWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
-	//item->parent()->setItemWidget(item, widget);
 }
 
 Account * Account::buildExistingAccountFromId(QString _accountId)
@@ -196,29 +189,15 @@ QString Account::getAccountDetail(QString & param)
 {
 	return (*accountDetails)[param];
 }
-/*
-QString Account::getAccountDetail(std::string param)
-{
-	return (*accountDetails)[QString(param)];
-}
-*/
+
+
 //Setters
-/*
-void Account::setAccountId(QString id)
-{
-	accountId = id;
-}
-*/
+
 void Account::setAccountDetails(MapStringString m)
 {
 	*accountDetails = m;
 }
-/*
-void Account::setState(account_state_t s)
-{
-	
-}
-*/
+
 void Account::setAccountDetail(QString param, QString val)
 {
 	(*accountDetails)[param] = val;
diff --git a/sflphone_kde/Call.cpp b/sflphone_kde/Call.cpp
index dc6b7a62f01070b1c815777238c5e70de1ef5432..4dde1b94326228522a3e6ce809dbe3be12a2623d 100644
--- a/sflphone_kde/Call.cpp
+++ b/sflphone_kde/Call.cpp
@@ -55,17 +55,47 @@ const function Call::actionPerformedFunctionMap[11][5] =
 
 const char * Call::historyIcons[3] = {ICON_HISTORY_INCOMING, ICON_HISTORY_OUTGOING, ICON_HISTORY_MISSED};
 
+void Call::initCallItem()
+{
+	item = new QListWidgetItem();
+	item->setSizeHint(QSize(140,25));
+	item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled|Qt::ItemIsEnabled);
+	itemWidget = new QWidget();
+	QLabel * labelIcon = new QLabel("", itemWidget);
+	QLabel * labelCallNumber = new QLabel(peer, itemWidget);
+	QLabel * labelTransferTo = new QLabel("Transfer to : ", itemWidget);
+	QLabel * labelTransferNumber = new QLabel("", itemWidget);
+	labelIcon->setObjectName(QString(CALL_ITEM_ICON));
+	labelCallNumber->setObjectName(QString(CALL_ITEM_CALL_NUMBER));
+	labelTransferNumber->setObjectName(QString(CALL_ITEM_TRANSFER_NUMBER));
+	QGridLayout * layout = new QGridLayout();
+	layout->setContentsMargins(0,0,0,0);
+	layout->setSpacing(1);
+	layout->addWidget(labelIcon, 0, 0, 1, 0);
+	layout->addWidget(labelCallNumber, 0, 1, 0, 2);
+	layout->addWidget(labelTransferTo, 1, 1);
+	layout->addWidget(labelTransferNumber, 1, 2);
+	itemWidget->setLayoutDirection(Qt::LeftToRight);
+	itemWidget->setLayout(layout);
+	item->setSizeHint(itemWidget->sizeHint());
+	setItemIcon(QString(ICON_REFUSE));
+}
+
+void Call::setItemIcon(const QString & pixmap)
+{
+	itemWidget->findChild<QLabel * >(QString(CALL_ITEM_ICON))->setPixmap(QPixmap(pixmap));
+}
 
 Call::Call(call_state startState, QString callId, QString from, QString account)
 {
 	this->callId = callId;
 	this->peer = from;
-	this->item = new QListWidgetItem(from);
+	initCallItem();
+	//this->item = new QListWidgetItem(from);
 	this->account = account;
 	this->recording = false;
-	this->currentState = startState;
+	changeCurrentState(startState);
 	this->historyItem = NULL;
-	
 }
 
 Call::~Call()
@@ -130,6 +160,11 @@ QListWidgetItem * Call::getItem()
 	return item;
 }
 
+QWidget * Call::getItemWidget()
+{
+	return itemWidget;
+}
+
 QListWidgetItem * Call::getHistoryItem()
 {
 	if(historyItem == NULL)
@@ -145,22 +180,22 @@ call_state Call::getState() const
 	return currentState;
 }
 
-call_state Call::stateChanged(const QString & newState)
+call_state Call::stateChanged(const QString & newStateName)
 {
 	call_state previousState = currentState;
-	daemon_call_state dcs = toDaemonCallState(newState);
-	currentState = stateChangedStateMap[currentState][dcs];
-	qDebug() << "Calling stateChanged " << newState << " -> " << toDaemonCallState(newState) << " on call with state " << previousState << ". Become " << currentState;
+	daemon_call_state dcs = toDaemonCallState(newStateName);
+	changeCurrentState(stateChangedStateMap[currentState][dcs]);
+	qDebug() << "Calling stateChanged " << newStateName << " -> " << toDaemonCallState(newState) << " on call with state " << previousState << ". Become " << currentState;
 	return currentState;
 }
 
-call_state Call::actionPerformed(call_action action, QString number)
+call_state Call::actionPerformed(call_action action)
 {
 	call_state previousState = currentState;
 	//execute the action associated with this transition
-	(this->*(actionPerformedFunctionMap[currentState][action]))(number);
+	(this->*(actionPerformedFunctionMap[currentState][action]))();
 	//update the state
-	currentState = actionPerformedStateMap[currentState][action];
+	changeCurrentState(actionPerformedStateMap[currentState][action]);
 	qDebug() << "Calling action " << action << " on call with state " << previousState << ". Become " << currentState;
 	//return the new state
 	return currentState;
@@ -199,11 +234,11 @@ void Call::putRecording()
 *************************************************/
 
 
-void Call::nothing(QString number)
+void Call::nothing()
 {
 }
 
-void Call::accept(QString number)
+void Call::accept()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Accepting call. callId : " << callId;
@@ -212,7 +247,7 @@ void Call::accept(QString number)
 	this->historyState = INCOMING;
 }
 
-void Call::refuse(QString number)
+void Call::refuse()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Refusing call. callId : " << callId;
@@ -221,16 +256,18 @@ void Call::refuse(QString number)
 	this->historyState = MISSED;
 }
 
-void Call::acceptTransf(QString number)
+void Call::acceptTransf()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	QLabel * transferNumber = itemWidget->findChild<QLabel *>(QString(CALL_ITEM_TRANSFER_NUMBER));
+	QString number = transferNumber->text();
 	qDebug() << "Accepting call and transfering it to number : " << number << ". callId : " << callId;
 	callManager.accept(callId);
 	callManager.transfert(callId, number);
 	//this->historyState = TRANSFERED;
 }
 
-void Call::acceptHold(QString number)
+void Call::acceptHold()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Accepting call and holding it. callId : " << callId;
@@ -239,23 +276,25 @@ void Call::acceptHold(QString number)
 	this->historyState = INCOMING;
 }
 
-void Call::hangUp(QString number)
+void Call::hangUp()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Hanging up call. callId : " << callId;
 	callManager.hangUp(callId);
 }
 
-void Call::hold(QString number)
+void Call::hold()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Holding call. callId : " << callId;
 	callManager.hold(callId);
 }
 
-void Call::call(QString number)
+void Call::call()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	QLabel * callNumber = itemWidget->findChild<QLabel *>(QString(CALL_ITEM_CALL_NUMBER));
+	QString number = callNumber->text();
 	this->account = SFLPhone::firstAccount();
 	if(!account.isEmpty())
 	{
@@ -273,15 +312,17 @@ void Call::call(QString number)
 	}
 }
 
-void Call::transfer(QString number)
+void Call::transfer()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	QLabel * transferNumber = itemWidget->findChild<QLabel *>(QString(CALL_ITEM_TRANSFER_NUMBER));
+	QString number = transferNumber->text();
 	qDebug() << "Transfering call to number : " << number << ". callId : " << callId;
 	callManager.transfert(callId, number);
 	this->stopTime = new QDateTime(QDateTime::currentDateTime());
 }
 
-void Call::unhold(QString number)
+void Call::unhold()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Unholding call. callId : " << callId;
@@ -289,14 +330,14 @@ void Call::unhold(QString number)
 }
 
 /*
-void Call::switchRecord(QString number)
+void Call::switchRecord()
 {
 	qDebug() << "Switching record state for call automate. callId : " << callId;
 	recording = !recording;
 }
 */
 
-void Call::setRecord(QString number)
+void Call::setRecord()
 {
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
 	qDebug() << "Setting record for call. callId : " << callId;
@@ -304,3 +345,28 @@ void Call::setRecord(QString number)
 	recording = !recording;
 }
 
+void Call::appendItemText(QString text)
+{
+	if(currentState == CALL_STATE_TRANSFER || currentState == CALL_STATE_TRANSF_HOLD)
+	{
+		QLabel * transferNumber = itemWidget->findChild<QLabel *>(QString(CALL_ITEM_TRANSFER_NUMBER));
+		transferNumber->setText(transferNumber->text() + text);
+	}
+	else
+	{
+		QLabel * callNumber = itemWidget->findChild<QLabel *>(QString(CALL_ITEM_CALL_NUMBER));
+		callNumber->setText(callNumber->text() + text);
+	}
+}
+
+void Call::changeCurrentState(call_state newState)
+{
+	currentState = newState;
+	updateItem();
+}
+
+void Call::updateItem()
+{
+	setItemIcon(QString(callStateIcons[currentState]));
+	
+}
diff --git a/sflphone_kde/Call.h b/sflphone_kde/Call.h
index 37d0beb648c91e0e339cb619de1dfc815b357eb4..ede26d8e788a0835649eeee2a498b92eb355f077 100644
--- a/sflphone_kde/Call.h
+++ b/sflphone_kde/Call.h
@@ -83,7 +83,7 @@ typedef enum
 
 class Call;
 
-typedef  void (Call::*function)(QString number);
+typedef  void (Call::*function)();
 
 class Call
 {
@@ -97,6 +97,7 @@ private:
 	QDateTime * startTime;
 	QDateTime * stopTime;
 	QListWidgetItem * item;
+	QWidget * itemWidget;
 	QListWidgetItem * historyItem;
 	
 	//Automate attributes
@@ -113,33 +114,40 @@ private:
 	static daemon_call_state toDaemonCallState(const QString & stateName);
 	
 	//Automate functions
-	void nothing(QString number);
-	void accept(QString number);
-	void refuse(QString number);
-	void acceptTransf(QString number);
-	void acceptHold(QString number);
-	void hangUp(QString number);
-	void hold(QString number);
-	void call(QString number);
-	void transfer(QString number);
-	void unhold(QString number);
-	void switchRecord(QString number);
-	void setRecord(QString number);
+	void nothing();
+	void accept();
+	void refuse();
+	void acceptTransf();
+	void acceptHold();
+	void hangUp();
+	void hold();
+	void call();
+	void transfer();
+	void unhold();
+	void switchRecord();
+	void setRecord();
 
 public:
 	
 	~Call();
+	void initCallItem();
 	static Call * buildDialingCall(QString callId);
 	static Call * buildIncomingCall(const QString & callId, const QString & from, const QString & account);
 	QListWidgetItem * getItem();
+	QWidget * getItemWidget();
 	QListWidgetItem * getHistoryItem();
 	call_state getState() const;
 	QString getCallId();
 	call_state stateChanged(const QString & newState);
-	call_state actionPerformed(call_action action, QString number = NULL);
+	call_state actionPerformed(call_action action);
 	call_state getCurrentState() const;
 	history_state getHistoryState() const;
 	bool getRecording() const;
+	void appendItemText(QString text);
+	void setItemIcon(const QString & pixmap);
+	void changeCurrentState(call_state newState);
+	void updateItem();
+
 
 };
 
diff --git a/sflphone_kde/CallList.cpp b/sflphone_kde/CallList.cpp
index ca09b473d4fca04f487a48ccbe5a6c3558fedb9d..cf8a00a3bb012715b6b45188b8b71f10978370f9 100644
--- a/sflphone_kde/CallList.cpp
+++ b/sflphone_kde/CallList.cpp
@@ -19,6 +19,18 @@ Call * CallList::operator[](const QListWidgetItem * item)
 	return NULL;
 }
 
+Call * CallList::getCallByItem(const QListWidgetItem * item)
+{
+	for(int i = 0 ; i < size() ; i++)
+	{
+		if ((*calls)[i]->getItem() == item)
+		{
+			return (*calls)[i];
+		}
+	}
+	return NULL;
+}
+
 Call * CallList::operator[](const QString & callId)
 {
 	for(int i = 0 ; i < size() ; i++)
@@ -48,16 +60,16 @@ int CallList::size()
 	return calls->size();
 }
 
-QListWidgetItem * CallList::addDialingCall()
+Call * CallList::addDialingCall()
 {
 	Call * call = Call::buildDialingCall(getAndIncCallId());
 	calls->append(call);
-	return call->getItem();
+	return call;
 }
 
-QListWidgetItem * CallList::addIncomingCall(const QString & callId, const QString & from, const QString & account)
+Call * CallList::addIncomingCall(const QString & callId, const QString & from, const QString & account)
 {
 	Call * call = Call::buildIncomingCall(callId, from, account);
 	calls->append(call);
-	return call->getItem();
+	return call;
 }
\ No newline at end of file
diff --git a/sflphone_kde/CallList.h b/sflphone_kde/CallList.h
index a99268b38bcc297ad7b915c9eb963f1ab588fdb5..5980252bb224ccda6ba0bb840321bf7849856fcf 100644
--- a/sflphone_kde/CallList.h
+++ b/sflphone_kde/CallList.h
@@ -14,12 +14,13 @@ public:
 	CallList();
 	~CallList();
 
+	Call * getCallByItem(const QListWidgetItem * item);
 	Call * operator[](const QListWidgetItem * item);
 	Call * operator[](const QString & callId);
 	Call * operator[](int ind);
 
-	QListWidgetItem * addDialingCall();
-	QListWidgetItem * addIncomingCall(const QString & callId, const QString & from, const QString & account);
+	Call * addDialingCall();
+	Call * addIncomingCall(const QString & callId, const QString & from, const QString & account);
 
 	QString getAndIncCallId();
 	int size();
diff --git a/sflphone_kde/ConfigDialog.ui b/sflphone_kde/ConfigDialog.ui
index 3e9d6154b9b682b842d93a54b1a95d4a6388f914..a629a712e9be7f42641bf54751fe797833e3be0b 100644
--- a/sflphone_kde/ConfigDialog.ui
+++ b/sflphone_kde/ConfigDialog.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>504</width>
+    <width>681</width>
     <height>455</height>
    </rect>
   </property>
@@ -637,6 +637,20 @@
                  </property>
                 </widget>
                </item>
+               <item row="1" column="1" >
+                <widget class="QComboBox" name="edit2_protocol" >
+                 <item>
+                  <property name="text" >
+                   <string>SIP</string>
+                  </property>
+                 </item>
+                 <item>
+                  <property name="text" >
+                   <string>IAX</string>
+                  </property>
+                 </item>
+                </widget>
+               </item>
                <item row="2" column="0" >
                 <widget class="QLabel" name="label3_server" >
                  <property name="text" >
@@ -647,6 +661,16 @@
                  </property>
                 </widget>
                </item>
+               <item row="2" column="1" >
+                <widget class="QLineEdit" name="edit3_server" >
+                 <property name="minimumSize" >
+                  <size>
+                   <width>0</width>
+                   <height>0</height>
+                  </size>
+                 </property>
+                </widget>
+               </item>
                <item row="3" column="0" >
                 <widget class="QLabel" name="label4_user" >
                  <property name="text" >
@@ -657,6 +681,9 @@
                  </property>
                 </widget>
                </item>
+               <item row="3" column="1" >
+                <widget class="QLineEdit" name="edit4_user" />
+               </item>
                <item row="4" column="0" >
                 <widget class="QLabel" name="label5_password" >
                  <property name="text" >
@@ -667,6 +694,13 @@
                  </property>
                 </widget>
                </item>
+               <item row="4" column="1" >
+                <widget class="QLineEdit" name="edit5_password" >
+                 <property name="echoMode" >
+                  <enum>QLineEdit::Password</enum>
+                 </property>
+                </widget>
+               </item>
                <item row="5" column="0" >
                 <widget class="QLabel" name="label6_mailbox" >
                  <property name="text" >
@@ -677,41 +711,14 @@
                  </property>
                 </widget>
                </item>
-               <item row="2" column="1" >
-                <widget class="QLineEdit" name="edit3_server" >
-                 <property name="minimumSize" >
-                  <size>
-                   <width>0</width>
-                   <height>0</height>
-                  </size>
-                 </property>
-                </widget>
-               </item>
-               <item row="3" column="1" >
-                <widget class="QLineEdit" name="edit4_user" />
-               </item>
-               <item row="4" column="1" >
-                <widget class="QLineEdit" name="edit5_password" >
-                 <property name="echoMode" >
-                  <enum>QLineEdit::Password</enum>
-                 </property>
-                </widget>
-               </item>
                <item row="5" column="1" >
                 <widget class="QLineEdit" name="edit6_mailbox" />
                </item>
-               <item row="1" column="1" >
-                <widget class="QComboBox" name="edit2_protocol" >
-                 <item>
-                  <property name="text" >
-                   <string>SIP</string>
-                  </property>
-                 </item>
-                 <item>
-                  <property name="text" >
-                   <string>IAX</string>
-                  </property>
-                 </item>
+               <item row="6" column="0" >
+                <widget class="QLabel" name="label7_state" >
+                 <property name="text" >
+                  <string>État </string>
+                 </property>
                 </widget>
                </item>
                <item row="6" column="1" >
@@ -721,11 +728,124 @@
                  </property>
                 </widget>
                </item>
-               <item row="6" column="0" >
-                <widget class="QLabel" name="label7_state" >
-                 <property name="text" >
-                  <string>État </string>
-                 </property>
+               <item row="7" column="0" >
+                <widget class="QWidget" native="1" name="widget_3" >
+                 <layout class="QHBoxLayout" name="horizontalLayout_7" >
+                  <property name="spacing" >
+                   <number>0</number>
+                  </property>
+                  <property name="margin" >
+                   <number>0</number>
+                  </property>
+                  <item>
+                   <widget class="QLabel" name="label_4" >
+                    <property name="text" >
+                     <string/>
+                    </property>
+                    <property name="pixmap" >
+                     <pixmap resource="resources.qrc" >:/images/icons/hang_up.svg</pixmap>
+                    </property>
+                   </widget>
+                  </item>
+                  <item>
+                   <layout class="QVBoxLayout" name="verticalLayout_4" >
+                    <property name="spacing" >
+                     <number>0</number>
+                    </property>
+                    <property name="leftMargin" >
+                     <number>0</number>
+                    </property>
+                    <property name="rightMargin" >
+                     <number>0</number>
+                    </property>
+                    <item>
+                     <widget class="QLabel" name="label_2" >
+                      <property name="text" >
+                       <string>144</string>
+                      </property>
+                      <property name="indent" >
+                       <number>5</number>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <layout class="QHBoxLayout" name="horizontalLayout_8" >
+                      <property name="spacing" >
+                       <number>0</number>
+                      </property>
+                      <property name="topMargin" >
+                       <number>0</number>
+                      </property>
+                      <item>
+                       <widget class="QLabel" name="label" >
+                        <property name="text" >
+                         <string>&lt;FONT SIZE=2>Transfer to :&lt;/FONT></string>
+                        </property>
+                       </widget>
+                      </item>
+                      <item>
+                       <widget class="QLabel" name="label_3" >
+                        <property name="text" >
+                         <string>&lt;FONT SIZE=2>122&lt;/FONT></string>
+                        </property>
+                       </widget>
+                      </item>
+                     </layout>
+                    </item>
+                   </layout>
+                  </item>
+                 </layout>
+                </widget>
+               </item>
+               <item row="8" column="0" >
+                <widget class="QWidget" native="1" name="widget_4" >
+                 <layout class="QGridLayout" name="gridLayout_2" >
+                  <property name="margin" >
+                   <number>0</number>
+                  </property>
+                  <property name="spacing" >
+                   <number>0</number>
+                  </property>
+                  <item rowspan="2" row="0" column="0" >
+                   <widget class="QLabel" name="label_5" >
+                    <property name="text" >
+                     <string/>
+                    </property>
+                    <property name="pixmap" >
+                     <pixmap resource="resources.qrc" >:/images/icons/hang_up.svg</pixmap>
+                    </property>
+                   </widget>
+                  </item>
+                  <item row="1" column="1" >
+                   <widget class="QLabel" name="label_7" >
+                    <property name="text" >
+                     <string>&lt;FONT SIZE=2>Transfer to :&lt;/FONT></string>
+                    </property>
+                   </widget>
+                  </item>
+                  <item row="1" column="2" >
+                   <widget class="QLabel" name="label_8" >
+                    <property name="text" >
+                     <string>&lt;FONT SIZE=2>122&lt;/FONT></string>
+                    </property>
+                   </widget>
+                  </item>
+                  <item row="0" column="1" colspan="2" >
+                   <widget class="QLabel" name="label_6" >
+                    <property name="text" >
+                     <string>144</string>
+                    </property>
+                    <property name="indent" >
+                     <number>5</number>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                 <zorder>label_5</zorder>
+                 <zorder>label_5</zorder>
+                 <zorder>label_7</zorder>
+                 <zorder>label_8</zorder>
+                 <zorder>label_6</zorder>
                 </widget>
                </item>
               </layout>
diff --git a/sflphone_kde/SFLPhone.cpp b/sflphone_kde/SFLPhone.cpp
index 7538cdb3957c1e8b186512c1522f13d49de84474..d4ff43f186b470e7fe1e319447952761987b3679 100644
--- a/sflphone_kde/SFLPhone.cpp
+++ b/sflphone_kde/SFLPhone.cpp
@@ -70,19 +70,18 @@ QString SFLPhone::firstAccount()
 	return QString();
 }
 
-/*
-void SFLPhone::typeChar(QChar c)
+void SFLPhone::addCallToCallList(Call * call)
 {
-	QListWidgetItem * item = listWidget_callList->currentItem();
-	if(!item)
-	{
-		qDebug() << "Typing when no item is selected. Opening an item.";
-		item = callList->addDialingCall();
-		listWidget_callList->addItem(item);
-		listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
-	}
-	listWidget_callList->currentItem()->setText(listWidget_callList->currentItem()->text() + c);
-}*/
+	qDebug() << "addCallToCallList";
+	QListWidgetItem * item = call->getItem();
+	qDebug() << "addCallToCallList2";
+	QWidget * widget = call->getItemWidget();
+	qDebug() << "addCallToCallList3";
+	listWidget_callList->addItem(item);
+	qDebug() << "addCallToCallList4";
+	listWidget_callList->setItemWidget(item, widget);
+	qDebug() << "addCallToCallList5";
+}
 
 void SFLPhone::typeString(QString str)
 {
@@ -95,11 +94,12 @@ void SFLPhone::typeString(QString str)
 		if(!item)
 		{
 			qDebug() << "Typing when no item is selected. Opening an item.";
-			item = callList->addDialingCall();
-			listWidget_callList->addItem(item);
+			Call * call = callList->addDialingCall();
+			addCallToCallList(call);
 			listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
 		}
-		listWidget_callList->currentItem()->setText(listWidget_callList->currentItem()->text() + str);
+		callList->getCallByItem(listWidget_callList->currentItem())->appendItemText(str);
+		//listWidget_callList->currentItem()->setText(listWidget_callList->currentItem()->text() + str);
 	}
 	if(stackedWidget_screen->currentWidget() == page_callHistory)
 	{
@@ -109,11 +109,11 @@ void SFLPhone::typeString(QString str)
 	}
 }
 
-void SFLPhone::action(QListWidgetItem * item, call_action action)
+void SFLPhone::actionb(Call * call, call_action action)
 {
 	try
 	{
-		(*callList)[item]->actionPerformed(action, item->text());
+		call->actionPerformed(action);
 	}
 	catch(const char * msg)
 	{
@@ -122,6 +122,10 @@ void SFLPhone::action(QListWidgetItem * item, call_action action)
 	updateWindowCallState();
 }
 
+void SFLPhone::action(QListWidgetItem * item, call_action action)
+{
+	actionb(callList->getCallByItem(item), action);
+}
 
 /*******************************************
 ******** Update Display Functions **********
@@ -560,8 +564,8 @@ void SFLPhone::on_action_accept_triggered()
 		if(!item || (*callList)[item]->getState() == CALL_STATE_RINGING || (*callList)[item]->getState() == CALL_STATE_CURRENT || (*callList)[item]->getState() == CALL_STATE_HOLD || (*callList)[item]->getState() == CALL_STATE_BUSY)
 		{
 			qDebug() << "Calling when no item is selected or item currently ringing, current, hold or busy. Opening an item.";
-			item = callList->addDialingCall();
-			listWidget_callList->addItem(item);
+			Call * call = callList->addDialingCall();
+			addCallToCallList(call);
 			listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
 		}
 		else
@@ -572,11 +576,11 @@ void SFLPhone::on_action_accept_triggered()
 	if(stackedWidget_screen->currentWidget() == page_callHistory)
 	{
 		action_history->setChecked(false);
-		QListWidgetItem * item = callList->addDialingCall();
-		item->setText(listWidget_callHistory->currentItem()->text());
-		listWidget_callList->addItem(item);
+		Call * call = callList->addDialingCall();
+		call->appendItemText(listWidget_callHistory->currentItem()->text());
+		addCallToCallList(call);
 		listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
-		action(item, CALL_ACTION_ACCEPT);
+		actionb(call, CALL_ACTION_ACCEPT);
 	}
 }
 
@@ -656,11 +660,11 @@ void SFLPhone::on_action_mailBox_triggered()
 	else
 	{
 		QString mailBoxNumber = configurationManager.getAccountDetails(account).value()[ACCOUNT_MAILBOX];
-		QListWidgetItem * item = callList->addDialingCall();
-		item->setText(mailBoxNumber);
-		listWidget_callList->addItem(item);
+		Call * call = callList->addDialingCall();
+		call->appendItemText(mailBoxNumber);
+		addCallToCallList(call);
 		listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
-		action(item, CALL_ACTION_ACCEPT);
+		actionb(call, CALL_ACTION_ACCEPT);
 	}
 }
 
@@ -687,8 +691,8 @@ void SFLPhone::on1_error(MapStringString details)
 void SFLPhone::on1_incomingCall(const QString &accountID, const QString & callID, const QString &from)
 {
 	qDebug() << "Incoming Call !";
-	QListWidgetItem * item = callList->addIncomingCall(callID, from, accountID);
-	listWidget_callList->addItem(item);
+	Call * call = callList->addIncomingCall(callID, from, accountID);
+	addCallToCallList(call);
 	listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
 }
 
diff --git a/sflphone_kde/SFLPhone.h b/sflphone_kde/SFLPhone.h
index 5f725590ee583a0679ab2b323b524cabeb4d4ffc..b7eb4f0733fe800a7c8d0c67dbcec12000fd9979 100644
--- a/sflphone_kde/SFLPhone.h
+++ b/sflphone_kde/SFLPhone.h
@@ -27,8 +27,11 @@ public:
 private slots:
 	//void typeChar(QChar c);
 	void typeString(QString str);
+	void actionb(Call * call, call_action action);
 	void action(QListWidgetItem * item, call_action action);
 	
+	void addCallToCallList(Call * call);
+	
 	void updateWindowCallState();
 	void updateSearchHistory();
 	void updateCallHistory();
diff --git a/sflphone_kde/resources.qrc b/sflphone_kde/resources.qrc
index f4b96db5f23069f3ddcbcff0729c7621e3eec7e3..97ac5653919b9eb9655ee13bc8dc132fe8c244c5 100644
--- a/sflphone_kde/resources.qrc
+++ b/sflphone_kde/resources.qrc
@@ -26,9 +26,6 @@
     <file>icons/icon_volume.svg</file>
     <file>icons/incoming.svg</file>
     <file>icons/mailbox.svg</file>
-    <file>icons/Makefile</file>
-    <file>icons/Makefile.am</file>
-    <file>icons/Makefile.in</file>
     <file>icons/mic_25.svg</file>
     <file>icons/mic_50.svg</file>
     <file>icons/mic_75.svg</file>
@@ -68,9 +65,6 @@
     <file>icons/icon_volume.svg</file>
     <file>icons/incoming.svg</file>
     <file>icons/mailbox.svg</file>
-    <file>icons/Makefile</file>
-    <file>icons/Makefile.am</file>
-    <file>icons/Makefile.in</file>
     <file>icons/mic_25.svg</file>
     <file>icons/mic_50.svg</file>
     <file>icons/mic_75.svg</file>
diff --git a/sflphone_kde/sflphone_const.h b/sflphone_kde/sflphone_const.h
index a4caa7a204942604d7d8b4f1a5f94c75afa843d4..192c8c10364e44b9c4317f9b1e748b91f7115599 100644
--- a/sflphone_kde/sflphone_const.h
+++ b/sflphone_kde/sflphone_const.h
@@ -35,72 +35,78 @@
 
 #define UNUSED  __attribute__((__unused__))
 
-#define PAGE_GENERAL  0
-#define PAGE_DISPLAY  1
-#define PAGE_ACCOUNTS  2
-#define PAGE_AUDIO    3
-
-#define ICON_INCOMING ":/images/icons/ring.svg"
-#define ICON_RINGING ":/images/icons/ring.svg"
-#define ICON_CURRENT ":/images/icons/current.svg"
-#define ICON_DIALING ":/images/icons/dial.svg"
-#define ICON_HOLD ":/images/icons/hold.svg"
-#define ICON_FAILURE ":/images/icons/fail.svg"
-#define ICON_BUSY ":/images/icons/busy.svg"
-#define ICON_TRANSFER ":/images/icons/transfert.svg"
-#define ICON_TRANSF_HOLD ":/images/icons/transfert.svg"
-
-#define ICON_CALL ":/images/icons/call.svg"
-#define ICON_HANGUP ":/images/icons/hang_up.svg"
-#define ICON_UNHOLD ":/images/icons/unhold.svg"
-#define ICON_ACCEPT ":/images/icons/accept.svg"
-#define ICON_REFUSE ":/images/icons/refuse.svg"
-#define ICON_EXEC_TRANSF ":/images/icons/call.svg"
-#define ICON_REC_DEL_OFF ":/images/icons/del_off.png"
-#define ICON_REC_DEL_ON ":/images/icons/del_on.png"
-
-#define ICON_REC_VOL_0 ":/images/icons/mic.svg"
-#define ICON_REC_VOL_1 ":/images/icons/mic_25.svg"
-#define ICON_REC_VOL_2 ":/images/icons/mic_50.svg"
-#define ICON_REC_VOL_3 ":/images/icons/mic_75.svg"
-
-#define ICON_SND_VOL_0 ":/images/icons/speaker.svg"
-#define ICON_SND_VOL_1 ":/images/icons/speaker_25.svg"
-#define ICON_SND_VOL_2 ":/images/icons/speaker_50.svg"
-#define ICON_SND_VOL_3 ":/images/icons/speaker_75.svg"
-
-#define ICON_HISTORY_INCOMING    ":/images/icons/incoming.svg"
-#define ICON_HISTORY_OUTGOING    ":/images/icons/outgoing.svg"
-#define ICON_HISTORY_MISSED      ":/images/icons/missed.svg"
-
-#define RECORD_DEVICE "mic"
-#define SOUND_DEVICE "speaker"
-
-#define ACCOUNT_TYPE          "Account.type"
-#define ACCOUNT_ALIAS		   "Account.alias"
-#define ACCOUNT_ENABLED		   "Account.enable"
-#define ACCOUNT_MAILBOX		   "Account.mailbox"
-#define ACCOUNT_HOSTNAME      "hostname"
-#define ACCOUNT_USERNAME      "username"
-#define ACCOUNT_PASSWORD      "password"
-#define ACCOUNT_STATUS        "Status"
-#define ACCOUNT_SIP_STUN_SERVER	  "STUN.server"
-#define ACCOUNT_SIP_STUN_ENABLED   "STUN.enable"
-
-#define ACCOUNT_ENABLED_TRUE        "TRUE"
-#define ACCOUNT_ENABLED_FALSE       "FALSE"
-
-#define ACCOUNT_STATE_REGISTERED         "REGISTERED"
-#define ACCOUNT_STATE_UNREGISTERED       "UNREGISTERED"
-#define ACCOUNT_STATE_TRYING             "TRYING"
-#define ACCOUNT_STATE_ERROR              "ERROR"
-#define ACCOUNT_STATE_ERROR_AUTH         "ERROR_AUTH"
-#define ACCOUNT_STATE_ERROR_NETWORK      "ERROR_NETWORK"
-#define ACCOUNT_STATE_ERROR_HOST         "ERROR_HOST"
-#define ACCOUNT_STATE_ERROR_CONF_STUN    "ERROR_CONF_STUN"
-#define ACCOUNT_STATE_ERROR_EXIST_STUN   "ERROR_EXIST_STUN"
-
-#define ACCOUNT_ITEM_CHECKBOX   "checkbox"
+
+#define PAGE_GENERAL                      0
+#define PAGE_DISPLAY                      1
+#define PAGE_ACCOUNTS                     2
+#define PAGE_AUDIO                        3
+
+
+#define ICON_INCOMING                     ":/images/icons/ring.svg"
+#define ICON_RINGING                      ":/images/icons/ring.svg"
+#define ICON_CURRENT                      ":/images/icons/current.svg"
+#define ICON_DIALING                      ":/images/icons/dial.svg"
+#define ICON_HOLD                         ":/images/icons/hold.svg"
+#define ICON_FAILURE                      ":/images/icons/fail.svg"
+#define ICON_BUSY                         ":/images/icons/busy.svg"
+#define ICON_TRANSFER                     ":/images/icons/transfert.svg"
+#define ICON_TRANSF_HOLD                  ":/images/icons/transfert.svg"
+
+#define ICON_CALL                         ":/images/icons/call.svg"
+#define ICON_HANGUP                       ":/images/icons/hang_up.svg"
+#define ICON_UNHOLD                       ":/images/icons/unhold.svg"
+#define ICON_ACCEPT                       ":/images/icons/accept.svg"
+#define ICON_REFUSE                       ":/images/icons/refuse.svg"
+#define ICON_EXEC_TRANSF                  ":/images/icons/call.svg"
+#define ICON_REC_DEL_OFF                  ":/images/icons/del_off.png"
+#define ICON_REC_DEL_ON                   ":/images/icons/del_on.png"
+
+#define ICON_REC_VOL_0                    ":/images/icons/mic.svg"
+#define ICON_REC_VOL_1                    ":/images/icons/mic_25.svg"
+#define ICON_REC_VOL_2                    ":/images/icons/mic_50.svg"
+#define ICON_REC_VOL_3                    ":/images/icons/mic_75.svg"
+
+#define ICON_SND_VOL_0                    ":/images/icons/speaker.svg"
+#define ICON_SND_VOL_1                    ":/images/icons/speaker_25.svg"
+#define ICON_SND_VOL_2                    ":/images/icons/speaker_50.svg"
+#define ICON_SND_VOL_3                    ":/images/icons/speaker_75.svg"
+
+#define ICON_HISTORY_INCOMING             ":/images/icons/incoming.svg"
+#define ICON_HISTORY_OUTGOING             ":/images/icons/outgoing.svg"
+#define ICON_HISTORY_MISSED               ":/images/icons/missed.svg"
+
+
+#define RECORD_DEVICE                     "mic"
+#define SOUND_DEVICE                      "speaker"
+
+
+#define ACCOUNT_TYPE                      "Account.type"
+#define ACCOUNT_ALIAS		               "Account.alias"
+#define ACCOUNT_ENABLED		               "Account.enable"
+#define ACCOUNT_MAILBOX		               "Account.mailbox"
+#define ACCOUNT_HOSTNAME                  "hostname"
+#define ACCOUNT_USERNAME                  "username"
+#define ACCOUNT_PASSWORD                  "password"
+#define ACCOUNT_STATUS                    "Status"
+#define ACCOUNT_SIP_STUN_SERVER	         "STUN.server"
+#define ACCOUNT_SIP_STUN_ENABLED          "STUN.enable"
+
+#define ACCOUNT_ENABLED_TRUE              "TRUE"
+#define ACCOUNT_ENABLED_FALSE             "FALSE"
+
+#define ACCOUNT_STATE_REGISTERED          "REGISTERED"
+#define ACCOUNT_STATE_UNREGISTERED        "UNREGISTERED"
+#define ACCOUNT_STATE_TRYING              "TRYING"
+#define ACCOUNT_STATE_ERROR               "ERROR"
+#define ACCOUNT_STATE_ERROR_AUTH          "ERROR_AUTH"
+#define ACCOUNT_STATE_ERROR_NETWORK       "ERROR_NETWORK"
+#define ACCOUNT_STATE_ERROR_HOST          "ERROR_HOST"
+#define ACCOUNT_STATE_ERROR_CONF_STUN     "ERROR_CONF_STUN"
+#define ACCOUNT_STATE_ERROR_EXIST_STUN    "ERROR_EXIST_STUN"
+
+#define ACCOUNT_ITEM_CHECKBOX             "checkbox"
+#define ACCOUNT_ITEM_LED                  "led"
+
 
 #define CALL_STATE_CHANGE_HUNG_UP         "HUNGUP"
 #define CALL_STATE_CHANGE_RINGING         "RINGING"
@@ -109,27 +115,32 @@
 #define CALL_STATE_CHANGE_BUSY            "BUSY"
 #define CALL_STATE_CHANGE_FAILURE         "FAILURE"
 #define CALL_STATE_CHANGE_UNHOLD_CURRENT  "UNHOLD_CURRENT"
-#define CALL_STATE_CHANGE_UNHOLD_RECORD  "UNHOLD_RECORD"
+#define CALL_STATE_CHANGE_UNHOLD_RECORD   "UNHOLD_RECORD"
+
+#define CALL_ITEM_CALL_NUMBER             "callNumber"
+#define CALL_ITEM_TRANSFER_NUMBER         "transferNumber"
+#define CALL_ITEM_ICON                    "icon"
 
-#define MAX_HISTORY_CAPACITY      60
 
-#define CODEC_NAME              0
-#define CODEC_SAMPLE_RATE       1
-#define CODEC_BIT_RATE          2
-#define CODEC_BANDWIDTH         3
+#define MAX_HISTORY_CAPACITY              60
+
+
+#define CODEC_NAME                        0
+#define CODEC_SAMPLE_RATE                 1
+#define CODEC_BIT_RATE                    2
+#define CODEC_BANDWIDTH                   3
 
 /** Error while opening capture device */
-#define ALSA_CAPTURE_DEVICE	      0x0001
+#define ALSA_CAPTURE_DEVICE	            0x0001
 /** Error while opening playback device */
-#define ALSA_PLAYBACK_DEVICE	      0x0010
+#define ALSA_PLAYBACK_DEVICE	            0x0010
 /** Error pulseaudio */
-#define PULSEAUDIO_NOT_RUNNING        0x0100
-
+#define PULSEAUDIO_NOT_RUNNING            0x0100
 
 
 
 /** Tone to play when no voice mails */
-#define TONE_WITHOUT_MESSAGE  0 
+#define TONE_WITHOUT_MESSAGE  0
 /** Tone to play when voice mails */
 #define TONE_WITH_MESSAGE     1
 /** Tells if the main window is reduced to the system tray or not */