diff --git a/src/gui/official/JPushButton.cpp b/src/gui/official/JPushButton.cpp
index b19113ac7b7df48e528bac020e8d1869a88019c4..196e940f1a82a4a1496ed70c4b61b5e29a94328f 100644
--- a/src/gui/official/JPushButton.cpp
+++ b/src/gui/official/JPushButton.cpp
@@ -52,7 +52,7 @@ JPushButton::setToggle(bool toggle)
 }
 
 QPixmap
-JPushButton::transparize(const QPixmap &image)
+JPushButton::transparize(const QString &image)
 {
   /**
   if (!p.mask()) {
@@ -64,7 +64,7 @@ JPushButton::transparize(const QPixmap &image)
     }
   }
   */
-  return image;
+  return QPixmap::fromMimeSource(image);
 }
 
 void
diff --git a/src/gui/official/JPushButton.hpp b/src/gui/official/JPushButton.hpp
index a6fc410e93860d86fdaedc4678e5c802f44d9cfa..617323c8b4e963daf38c47a8781a57d14dd4aeaf 100644
--- a/src/gui/official/JPushButton.hpp
+++ b/src/gui/official/JPushButton.hpp
@@ -45,7 +45,7 @@ public:
   bool isPressed()
   {return mIsPressed;}
 
-  static QPixmap transparize(const QPixmap &image);
+  static QPixmap transparize(const QString &image);
   
 public slots:  
   /**
diff --git a/src/gui/official/PhoneLine.cpp b/src/gui/official/PhoneLine.cpp
index 46d25698e49f7258cf09acba1a795aa3153e4cf3..e3ddc1a58b18a1a6fa52eff534a556a0ce726f75 100644
--- a/src/gui/official/PhoneLine.cpp
+++ b/src/gui/official/PhoneLine.cpp
@@ -94,7 +94,7 @@ void
 PhoneLine::select(bool hardselect)
 {
   if(!mSelected) {
-    DebugOutput::instance() << tr("PhoneLine %d: I am selected.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: I am selected.\n").arg(mLine);
     mSelected = true;
 
     if(!hardselect) {
@@ -151,7 +151,7 @@ void
 PhoneLine::unselect(bool hardselect)
 {
   if(mSelected) {
-    DebugOutput::instance() << tr("PhoneLine %d: I am unselected.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: I am unselected.\n").arg(mLine);
     mSelected = false;
     if(mIsOnError) {
       close();
@@ -172,7 +172,7 @@ void
 PhoneLine::incomming(const Call &call)
 {
   if(mCall) {
-    DebugOutput::instance() << tr("PhoneLine %d: Trying to set a phone line to an active call.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: Trying to set a phone line to an active call.\n").arg(mLine);
   }
   else {
     mCall = new Call(call);
@@ -227,9 +227,9 @@ PhoneLine::call()
 void 
 PhoneLine::call(const QString &to) 
 {
-  DebugOutput::instance() << tr("PhoneLine %d: Calling %s.\n").arg(mLine).arg(to);
+  DebugOutput::instance() << tr("PhoneLine %1: Calling %2.\n").arg(mLine).arg(to);
   if(!mCall) {
-    setLineStatus(tr("Calling %s...").arg(to));
+    setLineStatus(tr("Calling %1...").arg(to));
     mCall = new Call(mAccount.createCall(to));
     clear();
   }
@@ -240,7 +240,7 @@ PhoneLine::hold()
 {
   if(mCall) {
       setAction(tr("Holding..."));
-    DebugOutput::instance() << tr("PhoneLine %d: Trying to Hold.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: Trying to Hold.\n").arg(mLine);
     mCall->hold();
   }
 
@@ -252,7 +252,7 @@ PhoneLine::unhold()
 {
   if(mCall) {
     setAction("Unholding...");
-    DebugOutput::instance() << tr("PhoneLine %d: Trying to Unhold.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: Trying to Unhold.\n").arg(mLine);
     mCall->unhold();
   }
 }
@@ -262,7 +262,7 @@ PhoneLine::answer()
 {
   if(mCall) {
     setAction("Answering...");
-    DebugOutput::instance() << tr("PhoneLine %d: Trying to answer.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: Trying to answer.\n").arg(mLine);
     mCall->answer();
   }
 }
@@ -272,7 +272,7 @@ PhoneLine::hangup()
 {
   if(mCall) {
     setAction("Hanguping...");
-    DebugOutput::instance() << tr("PhoneLine %d: Trying to Hangup.\n").arg(mLine);
+    DebugOutput::instance() << tr("PhoneLine %1: Trying to Hangup.\n").arg(mLine);
     mCall->hangup();
     delete mCall;
     mCall = NULL;
diff --git a/src/gui/official/PhoneLineManagerImpl.cpp b/src/gui/official/PhoneLineManagerImpl.cpp
index 7efabc0689017f7bafeb882d68e257efa364c34b..1ec717439bad622e68df340fca28246288f7f48e 100644
--- a/src/gui/official/PhoneLineManagerImpl.cpp
+++ b/src/gui/official/PhoneLineManagerImpl.cpp
@@ -33,7 +33,7 @@ PhoneLineManagerImpl::PhoneLineManagerImpl()
   EventFactory::instance().registerEvent< WrongNumberStatus >("116");
   QObject::connect(this, SIGNAL(disconnected()),
 		   this, SLOT(closeSession()));
-  QObject::connect(this, SIGNAL(readyToHandleEvents),
+  QObject::connect(this, SIGNAL(readyToHandleEvents()),
 		   this, SLOT(handleEvents()));
   QObject::connect(this, SIGNAL(connected()),
 		   this, SIGNAL(readyToSendStatus()));
@@ -378,7 +378,8 @@ PhoneLineManagerImpl::selectLine(unsigned int line, bool hardselect)
     }
   }
   else {
-    _debug("PhoneLineManager: Tried to selected line %d, which appears to be invalid.\n", line);
+    DebugOutput::instance() << QObject::tr("PhoneLineManager: Tried to selected line %1, "
+					   "which appears to be invalid.\n").arg(line);
   }
 }
 
diff --git a/src/gui/official/PhoneLineManagerImpl.hpp b/src/gui/official/PhoneLineManagerImpl.hpp
index 17b440d07bc87bec275162d06f67635fa11c015f..3633ce80c956decfc2c2d5e9bda5b4b1ca97bc21 100644
--- a/src/gui/official/PhoneLineManagerImpl.hpp
+++ b/src/gui/official/PhoneLineManagerImpl.hpp
@@ -50,10 +50,10 @@ signals:
   void readyToSendStatus();
   void readyToHandleEvents();
   void gotErrorOnCallStatus();
-  void globalStatusSet(const QString &);
-  void bufferStatusSet(const QString &);
-  void actionSet(const QString &);
-  void lineStatusSet(const QString &);
+  void globalStatusSet(QString);
+  void bufferStatusSet(QString);
+  void actionSet(QString);
+  void lineStatusSet(QString);
 
 public slots:
   /**
diff --git a/src/gui/official/RequesterImpl.cpp b/src/gui/official/RequesterImpl.cpp
index 4094fc7e5fd17cf266321cf675147a61f83917e8..d418243a5a275fd1476ec005773728160718281c 100644
--- a/src/gui/official/RequesterImpl.cpp
+++ b/src/gui/official/RequesterImpl.cpp
@@ -174,10 +174,7 @@ RequesterImpl::generateSessionId()
 QString
 RequesterImpl::generateSequenceId()
 {
-  QString s("cSequenceID:");
-  s += mSequenceIdCount;
-  mSequenceIdCount++;
-  return s;
+  return QString("cSequenceID:%1").arg(mSequenceIdCount++);
 }
 
 void
diff --git a/src/gui/official/SFLLcd.cpp b/src/gui/official/SFLLcd.cpp
index ab6b8574ccdc17c57176b5d0e0aec39810784a4b..065e56070b97c33dbc4518a4e5caf1100569957f 100644
--- a/src/gui/official/SFLLcd.cpp
+++ b/src/gui/official/SFLLcd.cpp
@@ -10,12 +10,13 @@
 // Others fixed font support "Monospace", "Fixed", "MiscFixed"
 #define FONT_SIZE	10
 
-#define SCREEN "screen_main"
-#define OVERSCREEN "overscreen"
+#define SCREEN "images/screen_main.png"
+#define OVERSCREEN "images/overscreen.png"
+
 SFLLcd::SFLLcd(QWidget *parent)
   : QLabel(parent)
-  , mScreen(JPushButton::transparize(QPixmap::fromMimeSource(SCREEN)))
-  , mOverscreen(JPushButton::transparize(QPixmap::fromMimeSource(OVERSCREEN)))
+  , mScreen(JPushButton::transparize(SCREEN))
+  , mOverscreen(JPushButton::transparize(OVERSCREEN))
   , mGlobalStatusPos(-1)
   , mLineStatusPos(-1)
   , mBufferStatusPos(-1)
@@ -69,7 +70,7 @@ SFLLcd::stopTiming()
 }
 
 void
-SFLLcd::setGlobalStatus(const QString &global)
+SFLLcd::setGlobalStatus(QString global)
 {
   if(textIsTooBig(global)) {
     mGlobalStatusPos = 0;
@@ -81,7 +82,7 @@ SFLLcd::setGlobalStatus(const QString &global)
 }
 
 void
-SFLLcd::setBufferStatus(const QString &buffer)
+SFLLcd::setBufferStatus(QString buffer)
 {
   if(textIsTooBig(buffer)) {
     mBufferStatusPos = 0;
@@ -93,7 +94,7 @@ SFLLcd::setBufferStatus(const QString &buffer)
 }
 
 void
-SFLLcd::setLineStatus(const QString &line)
+SFLLcd::setLineStatus(QString line)
 {
   if(textIsTooBig(line)) {
     mLineStatusPos = 0;
@@ -105,7 +106,7 @@ SFLLcd::setLineStatus(const QString &line)
 }
 
 void
-SFLLcd::setAction(const QString &line)
+SFLLcd::setAction(QString line)
 {
   if(textIsTooBig(line)) {
     mActionPos = 0;
@@ -187,7 +188,7 @@ SFLLcd::extractVisibleText(const QString &text, int &pos)
 
   int nbCharBetween = 8;
 
-  if(pos >= tmp.length() + nbCharBetween) {
+  if(pos > 0 && ((unsigned int)pos >= tmp.length() + nbCharBetween)) {
     pos = 0;
   }
 
diff --git a/src/gui/official/SFLLcd.hpp b/src/gui/official/SFLLcd.hpp
index e02de41869ec50751d8582f873f6b18d9b4cd1b2..bf41fb4e93ee981853a64dfd88cd64fd3b74bcdc 100644
--- a/src/gui/official/SFLLcd.hpp
+++ b/src/gui/official/SFLLcd.hpp
@@ -40,10 +40,10 @@ public slots:
   virtual void paintEvent(QPaintEvent *event);
   QString getTimeStatus();
 
-  void setGlobalStatus(const QString &global);
-  void setLineStatus(const QString &line);
-  void setAction(const QString &line);
-  void setBufferStatus(const QString &line);
+  void setGlobalStatus(QString global);
+  void setLineStatus(QString line);
+  void setAction(QString line);
+  void setBufferStatus(QString line);
 
   void startTiming();
   void stopTiming();
diff --git a/src/gui/official/SFLPhoneApp.cpp b/src/gui/official/SFLPhoneApp.cpp
index d5b394ae528bb2a3a1499418af7c839a0b1c36ff..bd860ade3a79e8e4f566089ca26a2ac10166caa3 100644
--- a/src/gui/official/SFLPhoneApp.cpp
+++ b/src/gui/official/SFLPhoneApp.cpp
@@ -69,14 +69,14 @@ SFLPhoneApp::initConnections(SFLPhoneWindow *w)
 		   &PhoneLineManager::instance(), SLOT(sendKey(Qt::Key)));
 
   // LCD Connections.
-  QObject::connect(&PhoneLineManager::instance(), SIGNAL(lineStatusSet(const QString &)),
-		   w->mLcd, SLOT(setLineStatus(const QString &)));
-  QObject::connect(&PhoneLineManager::instance(), SIGNAL(actionSet(const QString &)),
-		   w->mLcd, SLOT(setAction(const QString &)));
-  QObject::connect(&PhoneLineManager::instance(), SIGNAL(globalStatusSet(const QString &)),
-		   w->mLcd, SLOT(setGlobalStatus(const QString &)));
-  QObject::connect(&PhoneLineManager::instance(), SIGNAL(bufferStatusSet(const QString &)),
-		   w->mLcd, SLOT(setBufferStatus(const QString &)));
+  QObject::connect(&PhoneLineManager::instance(), SIGNAL(lineStatusSet(QString)),
+		   w->mLcd, SLOT(setLineStatus(QString)));
+  QObject::connect(&PhoneLineManager::instance(), SIGNAL(actionSet(QString)),
+		   w->mLcd, SLOT(setAction(QString)));
+  QObject::connect(&PhoneLineManager::instance(), SIGNAL(globalStatusSet(QString)),
+		   w->mLcd, SLOT(setGlobalStatus(QString)));
+  QObject::connect(&PhoneLineManager::instance(), SIGNAL(bufferStatusSet(QString)),
+		   w->mLcd, SLOT(setBufferStatus(QString)));
 
 
 
diff --git a/src/gui/official/SFLPhoneWindow.cpp b/src/gui/official/SFLPhoneWindow.cpp
index b45ec21cb58d33e3a8a18009011d2aecb9e007dd..d55a4093255c64e10f0701cd7fd16a2f2eca6203 100644
--- a/src/gui/official/SFLPhoneWindow.cpp
+++ b/src/gui/official/SFLPhoneWindow.cpp
@@ -3,8 +3,7 @@
 #include <qbitmap.h>
 
 //To test if we are in QT4
-#include <qt.h>
-#ifdef quint16
+#ifdef QT3_SUPPORT 
 #include <QIcon>
 #endif
 
@@ -21,19 +20,30 @@
 #include "SFLLcd.hpp"
 #include "VolumeControl.hpp"
 
-#define LOGO_IMAGE "logo_ico"
-#define BACKGROUND_IMAGE "main"
-
+#define LOGO_IMAGE "images/logo_ico.png"
+#define BACKGROUND_IMAGE "images/main.png"
+#define HANGUP_RELEASED_IMAGE "images/hangup_off.png"
+#define HANGUP_PRESSED_IMAGE "images/hangup_on.png"
+#define HOLD_RELEASED_IMAGE "images/hold_off.png"
+#define HOLD_PRESSED_IMAGE "images/hold_on.png"
+#define OK_RELEASED_IMAGE "images/ok_off.png"
+#define OK_PRESSED_IMAGE "images/ok_on.png"
+#define CLEAR_RELEASED_IMAGE "images/clear_off.png"
+#define CLEAR_PRESSED_IMAGE "images/clear_on.png"
+#define MUTE_RELEASED_IMAGE "images/mute_off.png"
+#define MUTE_PRESSED_IMAGE "images/mute_on.png"
+#define VOLUME_IMAGE "images/volume.png"
+			    
 SFLPhoneWindow::SFLPhoneWindow()
-#ifdef quint16
+#ifdef QT3_SUPPORT
   : QMainWindow(NULL, Qt::FramelessWindowHint)
 #else
-    : QMainWindow(NULL)
+    : QMainWindow(NULL, NULL, Qt::WDestructiveClose)
 #endif
 {
   // Initialize the background image
   mMain = new QLabel(this);
-  QPixmap main(JPushButton::transparize(QPixmap::fromMimeSource(BACKGROUND_IMAGE)));
+  QPixmap main(JPushButton::transparize(BACKGROUND_IMAGE));
   mMain->setPixmap(main);
   //mMain->move(100,100);
   /*
@@ -73,40 +83,40 @@ SFLPhoneWindow::initLCD()
 void
 SFLPhoneWindow::initGUIButtons()
 {
-  mHangup = new JPushButton(":/sflphone/images/hangup_off",
-			    ":/sflphone/images/hangup_on",
+  mHangup = new JPushButton(QString(HANGUP_RELEASED_IMAGE),
+			    QString(HANGUP_PRESSED_IMAGE),
 			    mMain);
   mHangup->move(225,156);
   
-  mHold = new JPushButton(":/sflphone/images/hold_off",
-			  ":/sflphone/images/hold_on",
-			  mMain);
+  mHold = new JPushButton(QString(HOLD_RELEASED_IMAGE),
+			  QString(HOLD_PRESSED_IMAGE),
+						  mMain);
   mHold->move(225,68);
   
   
-  mOk = new JPushButton(":/sflphone/images/ok_off",
-			":/sflphone/images/ok_on",
+  mOk = new JPushButton(QString(OK_RELEASED_IMAGE),
+			QString(OK_PRESSED_IMAGE),
 			mMain);
   mOk->move(225,182);
 
-  mClear = new JPushButton(":/sflphone/images/clear_off",
-			   ":/sflphone/images/clear_on",
+  mClear = new JPushButton(QString(CLEAR_RELEASED_IMAGE),
+			   QString(CLEAR_PRESSED_IMAGE),
 			   mMain);
   mClear->move(225,130);
 
-  mMute = new JPushButton(":/sflphone/images/mute_off",
-			   ":/sflphone/images/mute_on",
+  mMute = new JPushButton(QString(MUTE_RELEASED_IMAGE),
+			  QString(MUTE_PRESSED_IMAGE),
 			   mMain);
   mMute->move(225,94);
   mMute->setToggle(true);
 
-  mVolume = new VolumeControl(":/sflphone/images/volume.png",
+  mVolume = new VolumeControl(QString(VOLUME_IMAGE),
 			      mMain);
   mVolume->setOrientation(VolumeControl::Vertical);
   mVolume->move(365,91);
 
-  mMicVolume = new VolumeControl(":/sflphone/images/volume.png",
-				  mMain);
+  mMicVolume = new VolumeControl(QString(VOLUME_IMAGE),
+				 mMain);
   mMicVolume->setOrientation(VolumeControl::Vertical);
   mMicVolume->move(347,91);
 			      
@@ -119,12 +129,8 @@ SFLPhoneWindow::initLineButtons()
   int ypos = 151;
   int offset = 31;
   for(int i = 0; i < NB_PHONELINES; i++) {
-    PhoneLineButton *line = new PhoneLineButton(QString(":/sflphone/images/l") +
-						QString::number(i + 1) +
-						"_off.png",
-						QString(":/sflphone/images/l") +
-						QString::number(i + 1) +
-						"_on.png",
+    PhoneLineButton *line = new PhoneLineButton(QString("images/l%1_off.png").arg(i + 1),
+						QString("images/l%1_on.png").arg(i + 1),
 						i,
 						mMain);
     line->move(xpos, ypos);
diff --git a/src/gui/official/TCPSessionIO.cpp b/src/gui/official/TCPSessionIO.cpp
index 933022797dab34083186ae6bce9796ed1785fe12..acede4af412926b28980aa572662381030625c0a 100644
--- a/src/gui/official/TCPSessionIO.cpp
+++ b/src/gui/official/TCPSessionIO.cpp
@@ -36,7 +36,7 @@ TCPSessionIO::TCPSessionIO(const QString &hostname, Q_UINT16 port)
   QObject::connect(mSocket, SIGNAL(connected()),
 		   this, SIGNAL(connected()));
   QObject::connect(mSocket, SIGNAL(error(int)),
-		   this, SLOT(error()));
+		   this, SLOT(error(int)));
   QObject::connect(mSocket, SIGNAL(error(int)),
 		   this, SIGNAL(disconnected()));
 }
diff --git a/src/gui/official/main.cpp b/src/gui/official/main.cpp
index 7ba183ee7f287501690c59d82f42561e186594e3..130803c031a53ca49c59f6a659e1c30e6dc37a3e 100644
--- a/src/gui/official/main.cpp
+++ b/src/gui/official/main.cpp
@@ -28,9 +28,12 @@
 int main(int argc, char **argv)
 {
   SFLPhoneApp app(argc, argv);
-  SFLPhoneWindow sfl;
-  app.initConnections(&sfl);
-  sfl.show();
+  SFLPhoneWindow* sfl = new SFLPhoneWindow();
+  app.initConnections(sfl);
+#ifndef QT3_SUPPORT
+  app.setMainWidget(sfl);
+#endif
+  sfl->show();
   PhoneLineManager::instance().start();
   return app.exec();
 }
diff --git a/src/gui/official/sflphone.pro b/src/gui/official/sflphone.pro
index 664cd34cce858016d04e4fcc568df26f330bb7bb..2290ffa40a135a5d9b8dce934cc45cfc09b4b7f4 100644
--- a/src/gui/official/sflphone.pro
+++ b/src/gui/official/sflphone.pro
@@ -9,6 +9,91 @@ INCLUDEPATH +=  /usr/lib/qt4/include/Qt/
 QT += network qt3support
 #CONFIG += debug 
 
+IMAGES += \
+images/about.png \
+images/audio.png \
+images/clear_off.png \
+images/clear_on.png \
+images/close_off.png \
+images/close_on.png \
+images/conference_off.png \
+images/conference_on.png \
+images/directory_off.png \
+images/directory_on.png \
+images/dtmf_0_off.png \
+images/dtmf_0_on.png \
+images/dtmf_1_off.png \
+images/dtmf_1_on.png \
+images/dtmf_2_off.png \
+images/dtmf_2_on.png \
+images/dtmf_3_off.png \
+images/dtmf_3_on.png \
+images/dtmf_4_off.png \
+images/dtmf_4_on.png \
+images/dtmf_5_off.png \
+images/dtmf_5_on.png \
+images/dtmf_6_off.png \
+images/dtmf_6_on.png \
+images/dtmf_7_off.png \
+images/dtmf_7_on.png \
+images/dtmf_8_off.png \
+images/dtmf_8_on.png \
+images/dtmf_9_off.png \
+images/dtmf_9_on.png \
+images/dtmf_close_off.png \
+images/dtmf_close_on.png \
+images/dtmf_main.png \
+images/dtmf_off.png \
+images/dtmf_on.png \
+images/dtmf_pound_off.png \
+images/dtmf_pound_on.png \
+images/dtmf_star_off.png \
+images/dtmf_star_on.png \
+images/gsm.png \
+images/hangup_off.png \
+images/hangup_on.png \
+images/hold_off.png \
+images/hold_on.png \
+images/l.png \
+images/l1_off.png \
+images/l1_on.png \
+images/l2_off.png \
+images/l2_on.png \
+images/l3_off.png \
+images/l3_on.png \
+images/l4_off.png \
+images/l4_on.png \
+images/l5_off.png \
+images/l5_on.png \
+images/l6_off.png \
+images/l6_on.png \
+images/logo_ico.png \
+images/main.png \
+images/minimize_off.png \
+images/minimize_on.png \
+images/mute_off.png \
+images/mute_on.png \
+images/network.png \
+images/ok_off.png \
+images/ok_on.png \
+images/overscreen.png \
+images/preferences.png \
+images/screen_main.png \
+images/setup_off.png \
+images/setup_on.png \
+images/sfl-logo.png \
+images/sflphone_logo.png \
+images/signalisations.png \
+images/transfer_off.png \
+images/transfer_on.png \
+images/tray-icon.png \
+images/video.png \
+images/voicemail_off.png \
+images/voicemail_on.png \
+images/volume.png \
+images/volume_off.png \
+images/volume_on.png 
+
 # Input
 HEADERS += Account.hpp \
            CallManager.hpp \