diff --git a/fscomm/mod_qsettings/mod_qsettings.cpp b/fscomm/mod_qsettings/mod_qsettings.cpp
index 84d577f2b8..73d22df62f 100644
--- a/fscomm/mod_qsettings/mod_qsettings.cpp
+++ b/fscomm/mod_qsettings/mod_qsettings.cpp
@@ -91,7 +91,7 @@ void XMLBinding::parseGroup(QXmlStreamWriter *streamWriter, QString group)
         return;
     }
 
-    if (group == "params")
+    if (group == "params" || group == "customParams")
     {
         _settings->beginGroup(group);
         foreach(QString param, _settings->childKeys())
diff --git a/fscomm/preferences/accountdialog.cpp b/fscomm/preferences/accountdialog.cpp
index 3acb284d7e..ab05393093 100644
--- a/fscomm/preferences/accountdialog.cpp
+++ b/fscomm/preferences/accountdialog.cpp
@@ -4,7 +4,7 @@
 #include "ui_accountdialog.h"
 #include "fshost.h"
 
-AccountDialog::AccountDialog(int accId, QWidget *parent) :
+AccountDialog::AccountDialog(QString accId, QWidget *parent) :
     QDialog(parent),
     _accId(accId),
     ui(new Ui::AccountDialog)
@@ -61,7 +61,7 @@ void AccountDialog::writeConfig()
 {
     _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways");
 
-    _settings->beginGroup(QString::number(_accId));
+    _settings->beginGroup(_accId);
     
     _settings->beginGroup("gateway/attrs");
     _settings->setValue("name", ui->sofiaGwNameEdit->text());
@@ -77,6 +77,9 @@ void AccountDialog::writeConfig()
     _settings->setValue("register", ui->sofiaGwRegisterCombo->currentText());
     _settings->setValue("register-transport", ui->sofiaGwRegisterTransportCombo->currentText());
     _settings->setValue("retry-seconds", ui->sofiaGwRetrySecondsSpin->value());    
+    _settings->endGroup();
+
+    _settings->beginGroup("gateway/customParams");
     for (int i = 0; i< ui->sofiaExtraParamTable->rowCount(); i++)
     {
         _settings->setValue(ui->sofiaExtraParamTable->item(i, 0)->text(),
@@ -97,6 +100,27 @@ void AccountDialog::writeConfig()
     emit gwAdded();
 }
 
+void AccountDialog::clear()
+{
+    ui->sofiaExtraParamTable->clearContents();
+    ui->sofiaExtraParamTable->setRowCount(0);
+
+    ui->sofiaGwNameEdit->clear();
+    ui->sofiaGwUsernameEdit->clear();
+    ui->sofiaGwRealmEdit->clear();
+    ui->sofiaGwPasswordEdit->clear();
+    ui->sofiaGwExtensionEdit->clear();
+    ui->sofiaGwExpireSecondsSpin->setValue(60);
+    ui->sofiaGwRegisterCombo->setCurrentIndex(0);
+    ui->sofiaGwRegisterTransportCombo->setCurrentIndex(0);
+    ui->sofiaGwRetrySecondsSpin->setValue(30);
+}
+
+void AccountDialog::setAccId(QString accId)
+{
+    _accId = accId;
+}
+
 void AccountDialog::changeEvent(QEvent *e)
 {
     QDialog::changeEvent(e);
diff --git a/fscomm/preferences/accountdialog.h b/fscomm/preferences/accountdialog.h
index 21ca7cffe0..413f0c0a99 100644
--- a/fscomm/preferences/accountdialog.h
+++ b/fscomm/preferences/accountdialog.h
@@ -12,8 +12,10 @@ class QSettings;
 class AccountDialog : public QDialog {
     Q_OBJECT
 public:
-    AccountDialog(int accId, QWidget *parent = 0);
+    AccountDialog(QString accId, QWidget *parent = 0);
     ~AccountDialog();
+    void clear();
+    void setAccId(QString);
 
 signals:
     void gwAdded();
@@ -27,7 +29,7 @@ protected:
     void changeEvent(QEvent *e);
 
 private:
-    int _accId;
+    QString _accId;
     Ui::AccountDialog *ui;
     QSettings *_settings;
 };
diff --git a/fscomm/preferences/accountdialog.ui b/fscomm/preferences/accountdialog.ui
index bf29856d94..1db7978308 100644
--- a/fscomm/preferences/accountdialog.ui
+++ b/fscomm/preferences/accountdialog.ui
@@ -20,7 +20,7 @@
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>1</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="tab">
       <attribute name="title">
diff --git a/fscomm/preferences/prefaccounts.cpp b/fscomm/preferences/prefaccounts.cpp
index 0f7da804ff..f14f8b51eb 100644
--- a/fscomm/preferences/prefaccounts.cpp
+++ b/fscomm/preferences/prefaccounts.cpp
@@ -1,6 +1,7 @@
 #include <QtGui>
 #include "prefaccounts.h"
 #include "accountdialog.h"
+#include "fshost.h"
 
 PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) :
         _ui(ui)
@@ -8,21 +9,70 @@ PrefAccounts::PrefAccounts(Ui::PrefDialog *ui) :
     _settings = new QSettings();
     _accDlg = NULL;
     connect(_ui->sofiaGwAddBtn, SIGNAL(clicked()), this, SLOT(addAccountBtnClicked()));
+    connect(_ui->sofiaGwRemBtn, SIGNAL(clicked()), this, SLOT(remAccountBtnClicked()));
 }
 
 void PrefAccounts::addAccountBtnClicked()
 {
     if (!_accDlg)
     {
-        _accDlg = new AccountDialog(_ui->accountsTable->rowCount());
+        QString uuid;
+        if (g_FSHost.sendCmd("create_uuid", "", &uuid) != SWITCH_STATUS_SUCCESS)
+        {
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not create UUID for account. Reason: %s\n", uuid.toAscii().constData());
+            return;
+        }
+        _accDlg = new AccountDialog(uuid);
         connect(_accDlg, SIGNAL(gwAdded()), this, SLOT(readConfig()));
     }
+    else
+    {
+        QString uuid;
+        if (g_FSHost.sendCmd("create_uuid", "", &uuid) != SWITCH_STATUS_SUCCESS)
+        {
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not create UUID for account. Reason: %s\n", uuid.toAscii().constData());
+            return;
+        }
+        _accDlg->setAccId(uuid);
+        _accDlg->clear();
+    }
 
     _accDlg->show();
     _accDlg->raise();
     _accDlg->activateWindow();
 }
 
+void PrefAccounts::remAccountBtnClicked()
+{
+    QList<QTableWidgetSelectionRange> sel = _ui->accountsTable->selectedRanges();
+    int offset =0;
+
+    foreach(QTableWidgetSelectionRange range, sel)
+    {
+        for(int row = range.topRow(); row<=range.bottomRow(); row++)
+        {
+            QTableWidgetItem *item = _ui->accountsTable->item(row-offset,0);
+
+            _settings->beginGroup("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways");
+            _settings->remove(item->data(Qt::UserRole).toString());
+            _settings->endGroup();
+            _ui->accountsTable->removeRow(row-offset);
+            offset++;
+        }
+    }
+
+    if (offset > 0)
+    {
+        QString res;
+        if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
+        {
+            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n");
+            return;
+        }
+        readConfig();
+    }
+}
+
 void PrefAccounts::writeConfig()
 {
     return;
@@ -41,9 +91,11 @@ void PrefAccounts::readConfig()
         _settings->beginGroup(accId);
         _settings->beginGroup("gateway/attrs");
         QTableWidgetItem *item0 = new QTableWidgetItem(_settings->value("name").toString());
+        item0->setData(Qt::UserRole, accId);
         _settings->endGroup();
         _settings->beginGroup("gateway/params");
         QTableWidgetItem *item1 = new QTableWidgetItem(_settings->value("username").toString());
+        item1->setData(Qt::UserRole, accId);
         _settings->endGroup();
         _settings->endGroup();
         _ui->accountsTable->setRowCount(_ui->accountsTable->rowCount()+1);
diff --git a/fscomm/preferences/prefaccounts.h b/fscomm/preferences/prefaccounts.h
index 2fbd6aa4ef..08ec5c18da 100644
--- a/fscomm/preferences/prefaccounts.h
+++ b/fscomm/preferences/prefaccounts.h
@@ -18,6 +18,8 @@ public slots:
 
 private slots:
     void addAccountBtnClicked();
+    void editAccountBtnClicked();
+    void remAccountBtnClicked();
 
 private:
     Ui::PrefDialog *_ui;
diff --git a/fscomm/preferences/prefdialog.ui b/fscomm/preferences/prefdialog.ui
index e3aec50a93..1ed428f5ef 100644
--- a/fscomm/preferences/prefdialog.ui
+++ b/fscomm/preferences/prefdialog.ui
@@ -96,7 +96,7 @@
    <item row="0" column="1">
     <widget class="QStackedWidget" name="stackedWidget">
      <property name="currentIndex">
-      <number>1</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="generalPage">
       <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -168,6 +168,9 @@
          </item>
          <item>
           <widget class="QPushButton" name="sofiaGwEditBtn">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
            <property name="text">
             <string>Edit</string>
            </property>