diff --git a/CustomModels/channelmodel.cpp b/CustomModels/channelmodel.cpp
index eb22f6939cae279ef4a5022d85bc954998a1b728..b67191774dc7928b812fe1229152fc00ffaae104 100644
--- a/CustomModels/channelmodel.cpp
+++ b/CustomModels/channelmodel.cpp
@@ -43,88 +43,84 @@ QVariant ChannelModel::data( const QModelIndex &index, int role ) const
 
     auto currentChannel = channelList.at( row );
 
-    if ( role == name ) {
-        return currentChannel->getName();
-    }
+    auto roleType = static_cast<ChannelRoles>( role );
 
-    if ( role == roomId ) {
-        return currentChannel->getRoomId();
-    }
+    switch ( roleType ) {
+        case ChannelRoles::name:
+            return currentChannel->getName();
 
-    if ( role == lastMessageText ) {
-        auto channel = channelList.at( row );
-        auto message = channel->getYoungestMessage();
+        case ChannelRoles::roomId:
+            return currentChannel->getRoomId();
 
-        if ( message.isNull() ) {
-            return "";
-        }
+        case ChannelRoles::lastMessageText: {
+                auto channel = channelList.at( row );
+                auto message = channel->getYoungestMessage();
 
-        if ( message->getMessageType() == QStringLiteral( "file" ) || message->getMessageType() == QStringLiteral( "image" ) || message->getMessageType() == QStringLiteral( "audio" ) ) {
-            return tr( QByteArrayLiteral( "file upload" ) );
-        }
+                if ( message.isNull() ) {
+                    return "";
+                }
 
-        return message->getMessageString();
-    }
+                if ( message->getMessageType() == QStringLiteral( "file" ) || message->getMessageType() == QStringLiteral( "image" ) || message->getMessageType() == QStringLiteral( "audio" ) ) {
+                    return tr( QByteArrayLiteral( "file upload" ) );
+                }
 
-    if ( role == channelType ) {
-        return currentChannel->getType();
-    }
+                return message->getMessageString();
+            }
 
-    if ( role == unreadMessages ) {
-        return currentChannel->getUnreadMessages();
-    }
+        case ChannelRoles::channelType:
+            return currentChannel->getType();
 
-    if ( role == readonly ) {
-        return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked();
-    }
+        case ChannelRoles::unreadMessages:
+            return currentChannel->getUnreadMessages();
 
-    if ( role == ownerId ) {
-        return currentChannel->getOwnerName();
-    }
+        case ChannelRoles::readonly:
+            return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked();
 
-    if ( role == ownerId ) {
-        return currentChannel->getOwnerId();
-    }
+        case ChannelRoles::ownerId:
+            return currentChannel->getOwnerId();
 
-    if ( role == archived ) {
-        return currentChannel->getArchived();
-    }
+        case ChannelRoles::archived:
+            return currentChannel->getArchived();
 
-    if ( role == blocked ) {
-        return currentChannel->getBlocked();
-    }
+        case ChannelRoles::blocked:
+            return currentChannel->getBlocked();
 
-    if ( role == username ) {
-        return currentChannel->getUsername();
-    }
+        case ChannelRoles::username:
+            return currentChannel->getUsername();
 
-    if ( role == userStatus ) {
-        int status = 0;
-        auto partner = currentChannel->getChatPartner();
+        case ChannelRoles::userStatus: {
+                int status = 0;
+                auto partner = currentChannel->getChatPartner();
 
-        if ( !partner.isNull() ) {
-            switch ( partner->getStatus() ) {
-                case RocketChatUser::status::ONLINE :
-                    status = 0;
-                    break;
+                if ( !partner.isNull() ) {
+                    switch ( partner->getStatus() ) {
+                        case RocketChatUser::status::ONLINE :
+                            status = 0;
+                            break;
 
-                case RocketChatUser::status::AWAY :
-                    status = 1;
-                    break;
+                        case RocketChatUser::status::AWAY :
+                            status = 1;
+                            break;
 
-                case RocketChatUser::status::OFFLINE:
-                    status = 2;
-                    break;
+                        case RocketChatUser::status::OFFLINE:
+                            status = 2;
+                            break;
 
-                case RocketChatUser::status::BUSY:
-                    status = 3;
-                    break;
-            }
-        }
+                        case RocketChatUser::status::BUSY:
+                            status = 3;
+                            break;
+                    }
 
-        return status;
+                }
+
+                return status;
+            }
 
+        case ChannelRoles::deleted:
+            return currentChannel->getDeleted();
 
+        case ChannelRoles::ownerName:
+            return currentChannel->getOwnerName();
     }
 
     return QVariant();
@@ -153,19 +149,19 @@ bool ChannelModel::addChannel( const QSharedPointer<RocketChatChannel> &channel
 QHash<int, QByteArray> ChannelModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[name] = QByteArrayLiteral( "name" );
-    roles[roomId] =  QByteArrayLiteral( "roomId" );
-    roles[unreadMessages] = QByteArrayLiteral( "unreadMessages" );
-    roles[channelType] = QByteArrayLiteral( "type" );
-    roles[lastMessageText] = QByteArrayLiteral( "lastMessageText" );
-    roles[readonly] = QByteArrayLiteral( "readonly" );
-    roles[archived] = QByteArrayLiteral( "archived" );
-    roles[blocked] = QByteArrayLiteral( "blocked" );
-    roles[deleted] = QByteArrayLiteral( "deleted" );
-    roles[ownerId] = QByteArrayLiteral( "ownerId" );
-    roles[ownerName] = QByteArrayLiteral( "ownerName" );
-    roles[username] = QByteArrayLiteral( "username" );
-    roles[userStatus] = QByteArrayLiteral( "userStatus" );
+    roles[static_cast<int>( ChannelRoles::name )] = QByteArrayLiteral( "name" );
+    roles[static_cast<int>( ChannelRoles::roomId )] =  QByteArrayLiteral( "roomId" );
+    roles[static_cast<int>( ChannelRoles::unreadMessages )] = QByteArrayLiteral( "unreadMessages" );
+    roles[static_cast<int>( ChannelRoles::channelType )] = QByteArrayLiteral( "type" );
+    roles[static_cast<int>( ChannelRoles::lastMessageText )] = QByteArrayLiteral( "lastMessageText" );
+    roles[static_cast<int>( ChannelRoles::readonly )] = QByteArrayLiteral( "readonly" );
+    roles[static_cast<int>( ChannelRoles::archived )] = QByteArrayLiteral( "archived" );
+    roles[static_cast<int>( ChannelRoles::blocked )] = QByteArrayLiteral( "blocked" );
+    roles[static_cast<int>( ChannelRoles::deleted )] = QByteArrayLiteral( "deleted" );
+    roles[static_cast<int>( ChannelRoles::ownerId )] = QByteArrayLiteral( "ownerId" );
+    roles[static_cast<int>( ChannelRoles::ownerName )] = QByteArrayLiteral( "ownerName" );
+    roles[static_cast<int>( ChannelRoles::username )] = QByteArrayLiteral( "username" );
+    roles[static_cast<int>( ChannelRoles::userStatus )] = QByteArrayLiteral( "userStatus" );
 
     return roles;
 }
@@ -210,7 +206,7 @@ void ChannelModel::onUnreadMessageChanged( const QString &id, int number )
 
     if ( found ) {
         qDebug() << "channel found";
-        emit dataChanged( index( pos ), index( pos ), {unreadMessages} );
+        emit dataChanged( index( pos ), index( pos ), {static_cast<int>( ChannelRoles::unreadMessages )} );
         emit unreadMessagesChanged();
     }
 }
@@ -233,7 +229,7 @@ void ChannelModel::onDataChanged( const QString &id, const QString &property )
         auto roles = roleNames();
         auto roleKeys = roles.keys();
 
-        for ( auto roleKey : roleKeys ) {
+        for ( const auto &roleKey : roleKeys ) {
             if ( roles[roleKey] == property ) {
                 emit dataChanged( index( pos ), index( pos ), {roleKey} );
             }
@@ -279,7 +275,7 @@ void ChannelModel::sortChanged()
 {
 
     beginResetModel();
-    std::sort( channelList.begin(), channelList.end(), []( QSharedPointer<RocketChatChannel> channel1, QSharedPointer<RocketChatChannel> channel2 ) {
+    std::sort( channelList.begin(), channelList.end(), []( const QSharedPointer<RocketChatChannel> &channel1, const QSharedPointer<RocketChatChannel> &channel2 ) {
         auto youngest1 = channel1->getYoungestMessage();
         auto youngest2 = channel2->getYoungestMessage();
 
diff --git a/CustomModels/channelmodel.h b/CustomModels/channelmodel.h
index cf4b5ebb7c59137cc90d10f4f9422af0763f74ed..e05feb2fa1696fb66a38d09ccceb321225a1d869 100644
--- a/CustomModels/channelmodel.h
+++ b/CustomModels/channelmodel.h
@@ -38,7 +38,7 @@ class RocketChatChannel;
 class ChannelModel : public QAbstractListModel
 {
         Q_OBJECT
-        enum ChannelRoles {
+        enum class ChannelRoles : int {
             name = Qt::UserRole + 1,
             roomId,
             unreadMessages,
diff --git a/CustomModels/emojismodel.cpp b/CustomModels/emojismodel.cpp
index da46ba0cc3fd8cc63cfd80d2e47e38453ea808a2..520afdda884b233075bad04977fd018d62b9f5a9 100644
--- a/CustomModels/emojismodel.cpp
+++ b/CustomModels/emojismodel.cpp
@@ -2,11 +2,13 @@
 
 EmojisModel::EmojisModel()
 {
-
+    mDuplicateCheck.reserve( 2000 );
 }
 
 int EmojisModel::rowCount( const QModelIndex &parent ) const
 {
+    Q_UNUSED( parent );
+
     if ( mData.contains( mCurrentCategory ) ) {
         return mData[mCurrentCategory].size();
     } else {
@@ -21,32 +23,31 @@ QVariant EmojisModel::data( const QModelIndex &index, int role ) const
     auto list = mData[mCurrentCategory];
     auto emoji = list[row];
 
-    switch ( role ) {
-        case static_cast<int>( EmojiRoles::emojiText ):
+    auto roleType = static_cast<EmojiRoles>( role );
+
+    switch ( roleType ) {
+        case EmojiRoles::emojiText:
             return emoji->getIdentifier();
 
-        case static_cast<int>( EmojiRoles::image ):
+        case EmojiRoles::image:
             return emoji->getFilePath();
 
-        case static_cast<int>( EmojiRoles::category ):
+        case EmojiRoles::category:
             return emoji->getCategory();
 
-        case static_cast<int>( EmojiRoles::order ):
+        case EmojiRoles::order:
             return emoji->getOrder();
 
-        case static_cast<int>( EmojiRoles::custom ):
+        case EmojiRoles::custom:
             if ( emoji->getCategory() == "custom" ) {
                 return true;
             } else {
                 return false;
             }
-
-        default:
-            return QVariant();
     }
 }
 
-void EmojisModel::addEmoji( QSharedPointer<Emoji> pEmoji )
+void EmojisModel::addEmoji( const QSharedPointer<Emoji> &pEmoji )
 {
     if ( !mDuplicateCheck.contains( pEmoji->getIdentifier() ) ) {
         auto category = pEmoji->getCategory();
@@ -88,7 +89,7 @@ void EmojisModel::addEmoji( QSharedPointer<Emoji> pEmoji )
     }
 }
 
-void EmojisModel::addEmojisByCategory( QString pCategory, QList<QSharedPointer<Emoji> > pList )
+void EmojisModel::addEmojisByCategory( const QString &pCategory, const QList<QSharedPointer<Emoji> > &pList )
 {
     if ( mCurrentCategory == pCategory ) {
         beginResetModel();
@@ -96,9 +97,10 @@ void EmojisModel::addEmojisByCategory( QString pCategory, QList<QSharedPointer<E
 
     if ( !mData.contains( pCategory ) ) {
         mData.insert( pCategory, QList<QSharedPointer<Emoji>>() );
+        mData[pCategory].reserve( 600 );
     }
 
-    for ( auto element : pList ) {
+    for ( const auto &element : pList ) {
         if ( !mDuplicateCheck.contains( element->getIdentifier() ) ) {
             mData[pCategory].append( element );
             mDuplicateCheck.insert( element->getIdentifier() );
diff --git a/CustomModels/emojismodel.h b/CustomModels/emojismodel.h
index a077bc9a44fc197e1c000cd7cc88d7f4e966ed09..e2d238b92cd38b2abf14e16ac36e19b76c8e50c4 100644
--- a/CustomModels/emojismodel.h
+++ b/CustomModels/emojismodel.h
@@ -30,8 +30,8 @@ class EmojisModel: public QAbstractListModel
         void setCurrentCategory( const QString &currentCategory );
 
     public slots:
-        void addEmoji( QSharedPointer<Emoji> pEmoji );
-        void addEmojisByCategory( QString pCategory, QList<QSharedPointer<Emoji>> pList );
+        void addEmoji( const QSharedPointer<Emoji> &pEmoji );
+        void addEmojisByCategory( const QString &pCategory, const QList<QSharedPointer<Emoji>> &pList );
         void clear();
     protected:
         QHash<int, QByteArray> roleNames() const;
diff --git a/CustomModels/loginmethodsmodel.cpp b/CustomModels/loginmethodsmodel.cpp
index ffbf2f0b94337bdfa3f973b120e07be60a68c01e..656435a17f08d32c7a0d29040de6fb75da87c6f3 100644
--- a/CustomModels/loginmethodsmodel.cpp
+++ b/CustomModels/loginmethodsmodel.cpp
@@ -46,26 +46,20 @@ int LoginMethodsModel::rowCount( const QModelIndex &parent ) const
 QVariant LoginMethodsModel::data( const QModelIndex &index, int role ) const
 {
     if ( elements.size() >= index.row() ) {
-        switch ( role ) {
-            case LoginMethodsRles::service :
+        auto roleType = static_cast<LoginMethodsRoles>( role );
+
+        switch ( roleType ) {
+            case LoginMethodsRoles::service :
                 return elements[index.row()][QStringLiteral( "service" )];
-                break;
 
-            case LoginMethodsRles::idpUrl :
+            case LoginMethodsRoles::idpUrl :
                 return elements[index.row()][QStringLiteral( "idpUrl" )];
-                break;
 
-            case LoginMethodsRles::buttonText :
+            case LoginMethodsRoles::buttonText :
                 return elements[index.row()][QStringLiteral( "buttonText" )];
-                break;
 
-            case LoginMethodsRles::redirectUrl :
+            case LoginMethodsRoles::redirectUrl :
                 return elements[index.row()][QStringLiteral( "redirectUrl" )];
-                break;
-
-            default:
-                return QVariant();
-                break;
         }
     }
 
@@ -86,10 +80,10 @@ void LoginMethodsModel::clear()
 QHash<int, QByteArray> LoginMethodsModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[service] = QByteArrayLiteral( "service" );
-    roles[idpUrl] = QByteArrayLiteral( "idpUrl" );
-    roles[buttonText] = QByteArrayLiteral( "buttonText" );
-    roles[redirectUrl] = QByteArrayLiteral( "redirectUrl" );
+    roles[static_cast<int>( LoginMethodsRoles::service )] = QByteArrayLiteral( "service" );
+    roles[static_cast<int>( LoginMethodsRoles::idpUrl )] = QByteArrayLiteral( "idpUrl" );
+    roles[static_cast<int>( LoginMethodsRoles::buttonText )] = QByteArrayLiteral( "buttonText" );
+    roles[static_cast<int>( LoginMethodsRoles::redirectUrl )] = QByteArrayLiteral( "redirectUrl" );
     return roles;
 }
 
diff --git a/CustomModels/loginmethodsmodel.h b/CustomModels/loginmethodsmodel.h
index 49619126fd849cb25f5eae0956accafc2fb5efd6..c419895d6330c4624f29086e0f0bbba497415d38 100644
--- a/CustomModels/loginmethodsmodel.h
+++ b/CustomModels/loginmethodsmodel.h
@@ -30,13 +30,13 @@ class LoginMethodsModel : public QAbstractListModel
 {
         Q_OBJECT
     public:
-    enum LoginMethodsRles {
-        service = Qt::UserRole + 1,
-        idpUrl,
-        buttonText,
-        redirectUrl
-    };
-        explicit LoginMethodsModel( QObject *parent = 0 );
+        enum class LoginMethodsRoles : int {
+            service = Qt::UserRole + 1,
+            idpUrl,
+            buttonText,
+            redirectUrl
+        };
+        explicit LoginMethodsModel( QObject *parent = nullptr );
 
         Q_INVOKABLE QVariantMap get( int row );
         Q_INVOKABLE void clear();
diff --git a/CustomModels/messagemodel.cpp b/CustomModels/messagemodel.cpp
index 48426ebda36217c202fadffff0a5cc007e5c057f..36aa0520958f67ea31d580f415923b3b27028d56 100644
--- a/CustomModels/messagemodel.cpp
+++ b/CustomModels/messagemodel.cpp
@@ -26,7 +26,7 @@
 
 MessagesModel::MessagesModel()
 {
-
+    duplicateCheck.reserve( 10000 );
 }
 
 QVariant MessagesModel::data( const QModelIndex &index, int role ) const
@@ -35,109 +35,117 @@ QVariant MessagesModel::data( const QModelIndex &index, int role ) const
 
     QSharedPointer<RocketChatMessage> messageAtIndex =  messagesOfCurrentChannel.at( row );
 
-    if ( role == MessageRoles::type ) {
-        return messageAtIndex->getMessageType();
-    }
+    auto roleType  = static_cast<MessageRoles>( role );
 
-    if ( role == MessageRoles::text ) {
-        return messageAtIndex->getMessageString();
-    }
+    switch ( roleType ) {
+        case MessageRoles::type:
+            return messageAtIndex->getMessageType();
 
-    if ( role == MessageRoles::linkurl ) {
-        if ( !messageAtIndex->getAttachments().empty() ) {
-            return messageAtIndex->getAttachments().first()->getUrl();
-        } else {
-            qWarning() << "linkurl not found";
-        }
-    }
+        case MessageRoles::text:
+            return messageAtIndex->getMessageString();
 
-    if ( role == author ) {
-        return messageAtIndex->getAuthor();
-    }
+        case MessageRoles::linkurl:
+            if ( !messageAtIndex->getAttachments().empty() ) {
+                return messageAtIndex->getAttachments().first()->getUrl();
+            } else {
+                qWarning() << "linkurl not found";
+            }
 
-    if ( role == authorId ) {
-        return messageAtIndex->getAuthorId();
-    }
+            break;
 
-    if ( role == date ) {
-        return messageAtIndex->getFormattedDate();
-    }
+        case MessageRoles::author:
+            return messageAtIndex->getAuthor();
 
-    if ( role == time ) {
-        return messageAtIndex->getFormattedTime();
-    }
+        case MessageRoles::authorId:
+            return messageAtIndex->getAuthorId();
 
-    if ( role == ownMessage ) {
-        return messageAtIndex->getOwnMessage();
-    }
+        case MessageRoles::date:
+            return messageAtIndex->getFormattedDate();
 
-    if ( role == width ) {
-        if ( !messageAtIndex->getAttachments().empty() ) {
-            return messageAtIndex->getAttachments().first()->getWidth();
-        } else {
-            qWarning() << "height not found";
-        }
-    }
+        case MessageRoles::time:
+            return messageAtIndex->getFormattedTime();
 
-    if ( role == height ) {
-        if ( !messageAtIndex->getAttachments().empty() ) {
-            return messageAtIndex->getAttachments().first()->getHeight();
-        } else {
-            qWarning() << "height not found";
-        }
-    }
+        case MessageRoles::ownMessage:
+            return messageAtIndex->getOwnMessage();
 
-    if ( role == formattedDate ) {
-        return messageAtIndex->getFormattedDate();
-    }
+        case MessageRoles::width:
+            if ( !messageAtIndex->getAttachments().empty() ) {
+                return messageAtIndex->getAttachments().first()->getWidth();
+            } else {
+                qWarning() << "width not found";
+            }
 
-    if ( role == formattedTime ) {
-        return messageAtIndex->getFormattedTime();
-    }
+            break;
 
-    if ( role == messageType ) {
-        return messageAtIndex->getMessageType();
-    }
+        case MessageRoles::height:
+            if ( !messageAtIndex->getAttachments().empty() ) {
+                return messageAtIndex->getAttachments().first()->getHeight();
+            } else {
+                qWarning() << "height not found";
+            }
 
-    if ( role == blocked ) {
-        return mBlockedUsers.contains( messageAtIndex->getAuthorId() );
-    }
+            break;
 
-    if ( role == id ) {
-        return messageAtIndex->getId();
-    }
-    if(role == replyMessage){
-        QList<QSharedPointer<RocketChatAttachment> > attachments = messageAtIndex->getAttachments();
-        if(attachments.size()){
-            QSharedPointer<RocketChatAttachment> first = attachments.first();
-            QSharedPointer<RocketChatReplyMessage> msg =  qSharedPointerCast<RocketChatReplyMessage>(first);
-            return msg->getMessageString();
-        }
-    }
-    if(role == replyAutor){
-        QList<QSharedPointer<RocketChatAttachment> > attachments = messageAtIndex->getAttachments();
-        if(attachments.size()){
-            QSharedPointer<RocketChatAttachment> first = attachments.first();
-            QSharedPointer<RocketChatReplyMessage> msg =  qSharedPointerCast<RocketChatReplyMessage>(first);
-            return msg->getAuthor();
-        }
-    }
-    if(role == replyUrl){
-        QString server = messageAtIndex->getServer();
-        auto currentChannel = mChannelMap[current];
-        QString type = currentChannel->getType();
-        QString name = currentChannel->getName();
-        if(type == "p"){
-            type  = "group";
-        }else if(type == "c"){
-            type  = "channel";
-        }else if(type == "d"){
-            type  = "direct";
-            name = currentChannel->getUsername();
-        }
+        case MessageRoles::formattedDate:
+            return messageAtIndex->getFormattedDate();
+
+        case MessageRoles::formattedTime:
+            return messageAtIndex->getFormattedTime();
+
+        case MessageRoles::messageType:
+            return messageAtIndex->getMessageType();
+
+        case MessageRoles::blocked:
+            return mBlockedUsers.contains( messageAtIndex->getAuthorId() );
+
+        case MessageRoles::id:
+            return messageAtIndex->getId();
+
+        case   MessageRoles::replyMessage: {
+                QList<QSharedPointer<RocketChatAttachment> > attachments = messageAtIndex->getAttachments();
 
-        return server+"/"+type+"/"+name+"?msg="+messageAtIndex->getId();
+                if ( attachments.size() ) {
+                    QSharedPointer<RocketChatAttachment> first = attachments.first();
+                    QSharedPointer<RocketChatReplyMessage> msg =  qSharedPointerCast<RocketChatReplyMessage>( first );
+                    return msg->getMessageString();
+                }
+            }
+            break;
+
+        case MessageRoles::replyAutor: {
+                QList<QSharedPointer<RocketChatAttachment> > attachments = messageAtIndex->getAttachments();
+
+                if ( attachments.size() ) {
+                    QSharedPointer<RocketChatAttachment> first = attachments.first();
+                    QSharedPointer<RocketChatReplyMessage> msg =  qSharedPointerCast<RocketChatReplyMessage>( first );
+                    return msg->getAuthor();
+                }
+            }
+            break;
+
+        case MessageRoles::replyUrl: {
+                QString server = messageAtIndex->getServer();
+                auto currentChannel = mChannelMap[current];
+                QString type = currentChannel->getType();
+                QString name = currentChannel->getName();
+
+                if ( type == "p" ) {
+                    type  = "group";
+                } else if ( type == "c" ) {
+                    type  = "channel";
+                } else if ( type == "d" ) {
+                    type  = "direct";
+                    name = currentChannel->getUsername();
+                }
+
+                return server + "/" + type + "/" + name + "?msg=" + messageAtIndex->getId();
+            }
+
+        case MessageRoles::replyDate:
+            //TODO: implement or remove!
+            break;
     }
+
     qWarning() << "MessagesModel data not found for row";
     return QVariant();
 }
@@ -163,9 +171,9 @@ void MessagesModel::setCurrent( const QString &value )
     } else {
         duplicateCheck.clear();
         messagesOfCurrentChannel.clear();
-       /* QSharedPointer<RocketChatChannel> dummyChannel (new RocketChatChannel());
-        dummyChannel->setRoomId(value);
-        addChannel(dummyChannel); */
+        /* QSharedPointer<RocketChatChannel> dummyChannel (new RocketChatChannel());
+         dummyChannel->setRoomId(value);
+         addChannel(dummyChannel); */
     }
 
     endResetModel();
@@ -188,16 +196,19 @@ int MessagesModel::rowCount( const QModelIndex &parent ) const
     return count;
 }
 
-int MessagesModel::getPositionOfMessage(const QString &pId)
+int MessagesModel::getPositionOfMessage( const QString &pId )
 {
     int pos = -1;
-    for(int i=0; i<messagesOfCurrentChannel.size();i++){
-        auto element = messagesOfCurrentChannel.at(i);
-        if(element->getId()==pId){
+
+    for ( int i = 0; i < messagesOfCurrentChannel.size(); i++ ) {
+        auto element = messagesOfCurrentChannel.at( i );
+
+        if ( element->getId() == pId ) {
             pos = i;
             break;
         }
     }
+
     return pos;
 }
 
@@ -210,7 +221,7 @@ bool MessagesModel::addChannel( const QSharedPointer<RocketChatChannel> &channel
     }
 
     mChannelMap.insert( id, channel );
-    connect( channel.data(), &RocketChatChannel::messageAdded, this, [ = ]( QString id, qint64 timestamp ) {
+    connect( channel.data(), &RocketChatChannel::messageAdded, this, [ = ]( const QString & id, qint64 timestamp ) {
         Q_UNUSED( id )
         onNewMessage( channel, timestamp );
     } );
@@ -227,25 +238,25 @@ void MessagesModel::addBlockedUser( const QString &pUserId )
 QHash<int, QByteArray> MessagesModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[text] = QByteArrayLiteral( "msg" );
-    roles[author] = QByteArrayLiteral( "author" );
-    roles[authorId] = QByteArrayLiteral( "authorId" );
-    roles[linkurl] = QByteArrayLiteral( "linkurl" );
-    roles[type] = QByteArrayLiteral( "type" );
-    roles[date] = QByteArrayLiteral( "date" );
-    roles[time] = QByteArrayLiteral( "time" );
-    roles[ownMessage] = QByteArrayLiteral( "ownMessage" );
-    roles[height] = QByteArrayLiteral( "height" );
-    roles[width ] = QByteArrayLiteral( "width" );
-    roles[formattedDate ] = QByteArrayLiteral( "formattedDate" );
-    roles[formattedTime] = QByteArrayLiteral( "formattedTime" );
-    roles[messageType] = QByteArrayLiteral( "messageType" );
-    roles[blocked] = QByteArrayLiteral( "blocked" );
-    roles[id] = QByteArrayLiteral( "id" );
-    roles[replyMessage] = QByteArrayLiteral( "replyMessage" );
-    roles[replyAutor] = QByteArrayLiteral( "replyAutor" );
-    roles[replyDate] = QByteArrayLiteral( "replyDate" );
-    roles[replyUrl] = QByteArrayLiteral( "replyUrl" );
+    roles[static_cast<int>( MessageRoles::text )] = QByteArrayLiteral( "msg" );
+    roles[static_cast<int>( MessageRoles::author )] = QByteArrayLiteral( "author" );
+    roles[static_cast<int>( MessageRoles::authorId )] = QByteArrayLiteral( "authorId" );
+    roles[static_cast<int>( MessageRoles::linkurl )] = QByteArrayLiteral( "linkurl" );
+    roles[static_cast<int>( MessageRoles::type )] = QByteArrayLiteral( "type" );
+    roles[static_cast<int>( MessageRoles::date )] = QByteArrayLiteral( "date" );
+    roles[static_cast<int>( MessageRoles::time )] = QByteArrayLiteral( "time" );
+    roles[static_cast<int>( MessageRoles::ownMessage )] = QByteArrayLiteral( "ownMessage" );
+    roles[static_cast<int>( MessageRoles::height )] = QByteArrayLiteral( "height" );
+    roles[static_cast<int>( MessageRoles::width )] = QByteArrayLiteral( "width" );
+    roles[static_cast<int>( MessageRoles::formattedDate )] = QByteArrayLiteral( "formattedDate" );
+    roles[static_cast<int>( MessageRoles::formattedTime )] = QByteArrayLiteral( "formattedTime" );
+    roles[static_cast<int>( MessageRoles::messageType )] = QByteArrayLiteral( "messageType" );
+    roles[static_cast<int>( MessageRoles::blocked )] = QByteArrayLiteral( "blocked" );
+    roles[static_cast<int>( MessageRoles::id )] = QByteArrayLiteral( "id" );
+    roles[static_cast<int>( MessageRoles::replyMessage )] = QByteArrayLiteral( "replyMessage" );
+    roles[static_cast<int>( MessageRoles::replyAutor )] = QByteArrayLiteral( "replyAutor" );
+    roles[static_cast<int>( MessageRoles::replyDate )] = QByteArrayLiteral( "replyDate" );
+    roles[static_cast<int>( MessageRoles::replyUrl )] = QByteArrayLiteral( "replyUrl" );
     return roles;
 }
 
diff --git a/CustomModels/messagemodel.h b/CustomModels/messagemodel.h
index 6fc17cf423247b8a76580e2841ffd36beb396c6d..953709e80114cc25122982bbbb88d063995e7caf 100644
--- a/CustomModels/messagemodel.h
+++ b/CustomModels/messagemodel.h
@@ -37,7 +37,7 @@ class MessagesModel : public QAbstractListModel
         Q_PROPERTY( QString currentChannel READ getCurrent WRITE setCurrent NOTIFY currentChannelChanged )
 
     public:
-        enum MessageRoles {
+        enum class MessageRoles : int {
             text = Qt::UserRole + 1,
             type,
             linkurl,
@@ -64,7 +64,7 @@ class MessagesModel : public QAbstractListModel
         void setCurrent( const QString &value );
         Q_INVOKABLE int rowCount( const QModelIndex &parent = QModelIndex() ) const;
 
-        Q_INVOKABLE int getPositionOfMessage(const QString &pId);
+        Q_INVOKABLE int getPositionOfMessage( const QString &pId );
 
         void onCurrentChannelChanged();
         bool addChannel( const QSharedPointer<RocketChatChannel> & );
diff --git a/CustomModels/messagesearchresultsmodel.cpp b/CustomModels/messagesearchresultsmodel.cpp
index b252cd1c67db61247d483f25e6fd3ce74e399e9e..c8ed8d6c1544db748c19600af88b2e206d3d8475 100644
--- a/CustomModels/messagesearchresultsmodel.cpp
+++ b/CustomModels/messagesearchresultsmodel.cpp
@@ -28,52 +28,78 @@ QVariant MessageSearchResultsModel::data( const QModelIndex &index, int role ) c
         return QVariant();
     }
 
-    if ( role == text ) {
-        return message->getMessageString();
-    } else if ( role == author ) {
-        return message->getAuthor();
-    } else if ( role == authorId ) {
-        return message->getAuthorId();
-    } else if ( role == linkurl ) {
-        if ( !message->getAttachments().empty() ) {
-            return message->getAttachments().first()->getUrl();
-        } else {
-            qWarning() << "linkurl not found";
-        }
-    } else if ( role == type ) {
-        return message->getMessageType();
-    } else if ( role == date ) {
-        return message->getFormattedDate();
-    } else if ( role == time ) {
-        return message->getFormattedTime();
-    } else if ( role == ownMessage ) {
-        return message->getOwnMessage();
-    } else if ( role == height ) {
-        if ( !message->getAttachments().empty() ) {
-            return message->getAttachments().first()->getHeight();
-        } else {
-            qWarning() << "height not found";
-        }
-    } else if ( role == width ) {
-        if ( !message->getAttachments().empty() ) {
-            return message->getAttachments().first()->getWidth();
-        } else {
-            qWarning() << "height not found";
-        }
-    } else if ( role == formattedDate ) {
-        return message->getFormattedDate();
-    } else if ( role == formattedTime ) {
-        return message->getFormattedTime();
-    } else if ( role == messageType ) {
-        return message->getMessageType();
-    } else if ( role == blocked ) {
-        return false;
-    } else if ( role == id ) {
-        return message->getId();
-    } else if ( role == rid ) {
-        return message->getRoomId();
-    } else if ( role == timestamp ) {
-        return message->getTimestamp();
+    auto roleType = static_cast<MessageRoles>( role );
+
+
+    switch ( roleType ) {
+        case MessageRoles::text:
+            return message->getMessageString();
+
+        case MessageRoles::author:
+            return message->getAuthor();
+
+        case MessageRoles::authorId:
+            return message->getAuthorId();
+
+        case MessageRoles::linkurl:
+            if ( !message->getAttachments().empty() ) {
+                return message->getAttachments().first()->getUrl();
+            } else {
+                qWarning() << "linkurl not found";
+            }
+
+            break;
+
+        case MessageRoles::type:
+            return message->getMessageType();
+
+        case MessageRoles::date:
+            return message->getFormattedDate();
+
+        case MessageRoles::time:
+            return message->getFormattedTime();
+
+        case MessageRoles::ownMessage:
+            return message->getOwnMessage();
+
+        case MessageRoles::height:
+            if ( !message->getAttachments().empty() ) {
+                return message->getAttachments().first()->getHeight();
+            } else {
+                qWarning() << "height not found";
+            }
+
+            break;
+
+        case MessageRoles::width:
+            if ( !message->getAttachments().empty() ) {
+                return message->getAttachments().first()->getWidth();
+            } else {
+                qWarning() << "width not found";
+            }
+
+            break;
+
+        case MessageRoles::formattedDate:
+            return message->getFormattedDate();
+
+        case MessageRoles::formattedTime:
+            return message->getFormattedTime();
+
+        case MessageRoles::messageType:
+            return message->getMessageType();
+
+        case MessageRoles::blocked:
+            return false;
+
+        case MessageRoles::id:
+            return message->getId();
+
+        case MessageRoles::rid:
+            return message->getRoomId();
+
+        case MessageRoles::timestamp:
+            return message->getTimestamp();
     }
 
     return QVariant();
@@ -83,28 +109,28 @@ QVariant MessageSearchResultsModel::data( const QModelIndex &index, int role ) c
 QHash<int, QByteArray> MessageSearchResultsModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[text] = QByteArrayLiteral( "msg" );
-    roles[author] = QByteArrayLiteral( "author" );
-    roles[authorId] = QByteArrayLiteral( "authorId" );
-    roles[linkurl] = QByteArrayLiteral( "linkurl" );
-    roles[type] = QByteArrayLiteral( "type" );
-    roles[date] = QByteArrayLiteral( "date" );
-    roles[time] = QByteArrayLiteral( "time" );
-    roles[ownMessage] = QByteArrayLiteral( "ownMessage" );
-    roles[height] = QByteArrayLiteral( "height" );
-    roles[width ] = QByteArrayLiteral( "width" );
-    roles[formattedDate ] = QByteArrayLiteral( "formattedDate" );
-    roles[formattedTime] = QByteArrayLiteral( "formattedTime" );
-    roles[messageType] = QByteArrayLiteral( "messageType" );
-    roles[blocked] = QByteArrayLiteral( "blocked" );
-    roles[id] = QByteArrayLiteral( "id" );
-    roles[rid] = QByteArrayLiteral( "rid" );
-    roles[timestamp] = QByteArrayLiteral( "timestamp" );
+    roles[static_cast<int>( MessageRoles::text )] = QByteArrayLiteral( "msg" );
+    roles[static_cast<int>( MessageRoles::author )] = QByteArrayLiteral( "author" );
+    roles[static_cast<int>( MessageRoles::authorId )] = QByteArrayLiteral( "authorId" );
+    roles[static_cast<int>( MessageRoles::linkurl )] = QByteArrayLiteral( "linkurl" );
+    roles[static_cast<int>( MessageRoles::type )] = QByteArrayLiteral( "type" );
+    roles[static_cast<int>( MessageRoles::date )] = QByteArrayLiteral( "date" );
+    roles[static_cast<int>( MessageRoles::time )] = QByteArrayLiteral( "time" );
+    roles[static_cast<int>( MessageRoles::ownMessage )] = QByteArrayLiteral( "ownMessage" );
+    roles[static_cast<int>( MessageRoles::height )] = QByteArrayLiteral( "height" );
+    roles[static_cast<int>( MessageRoles::width )] = QByteArrayLiteral( "width" );
+    roles[static_cast<int>( MessageRoles::formattedDate )] = QByteArrayLiteral( "formattedDate" );
+    roles[static_cast<int>( MessageRoles::formattedTime )] = QByteArrayLiteral( "formattedTime" );
+    roles[static_cast<int>( MessageRoles::messageType )] = QByteArrayLiteral( "messageType" );
+    roles[static_cast<int>( MessageRoles::blocked )] = QByteArrayLiteral( "blocked" );
+    roles[static_cast<int>( MessageRoles::id )] = QByteArrayLiteral( "id" );
+    roles[static_cast<int>( MessageRoles::rid )] = QByteArrayLiteral( "rid" );
+    roles[static_cast<int>( MessageRoles::timestamp )] = QByteArrayLiteral( "timestamp" );
 
     return roles;
 }
 
-void MessageSearchResultsModel::setSearchResults( MessageList pResults )
+void MessageSearchResultsModel::setSearchResults( const MessageList &pResults )
 {
     beginResetModel();
     mElements.clear();
diff --git a/CustomModels/messagesearchresultsmodel.h b/CustomModels/messagesearchresultsmodel.h
index 708219921c401bdbd5463e83fd40f1bdd1bc5a57..d040f24e3c18d0236f1401557500a7f08aef0e9d 100644
--- a/CustomModels/messagesearchresultsmodel.h
+++ b/CustomModels/messagesearchresultsmodel.h
@@ -10,42 +10,42 @@ typedef QList<QSharedPointer<RocketChatMessage>> MessageList;
 
 class MessageSearchResultsModel : public QAbstractListModel
 {
-    Q_OBJECT
-public:
-    enum MessageRoles {
-        text = Qt::UserRole + 1,
-        type,
-        linkurl,
-        author,
-        date,
-        time,
-        ownMessage,
-        width,
-        height,
-        formattedDate,
-        formattedTime,
-        messageType,
-        authorId,
-        blocked,
-        id,
-        rid,
-        timestamp
-    };
-    MessageSearchResultsModel();
-
-    Q_INVOKABLE void clear();
-
-    int rowCount(const QModelIndex &parent) const;
-    QVariant data(const QModelIndex &index, int role) const;
-
-    QHash<int, QByteArray> roleNames() const;
-
-    Q_INVOKABLE void setSearchResults(MessageList pResults);
-
-    Q_INVOKABLE int getPositionOfMessage(const QString &pId);
-
-private:
-    QList<QSharedPointer<RocketChatMessage>> mElements;
+        Q_OBJECT
+    public:
+        enum MessageRoles : int {
+            text = Qt::UserRole + 1,
+            type,
+            linkurl,
+            author,
+            date,
+            time,
+            ownMessage,
+            width,
+            height,
+            formattedDate,
+            formattedTime,
+            messageType,
+            authorId,
+            blocked,
+            id,
+            rid,
+            timestamp
+        };
+        MessageSearchResultsModel();
+
+        Q_INVOKABLE void clear();
+
+        int rowCount( const QModelIndex &parent ) const;
+        QVariant data( const QModelIndex &index, int role ) const;
+
+        QHash<int, QByteArray> roleNames() const;
+
+        Q_INVOKABLE void setSearchResults( const MessageList &pResults );
+
+        Q_INVOKABLE int getPositionOfMessage( const QString &pId );
+
+    private:
+        QList<QSharedPointer<RocketChatMessage>> mElements;
 };
 
 #endif // MESSAGESEARCHRESULTSMODEL_H
diff --git a/CustomModels/roomsearchresultsmodel.cpp b/CustomModels/roomsearchresultsmodel.cpp
index cd9c6df7adff0169304f2d3a96d0c37c4fdbe748..b45baba6153352a3393da84147b703ba53c04e86 100644
--- a/CustomModels/roomsearchresultsmodel.cpp
+++ b/CustomModels/roomsearchresultsmodel.cpp
@@ -5,12 +5,12 @@ RoomSearchResultsModel::RoomSearchResultsModel()
 
 }
 
-int RoomSearchResultsModel::rowCount(const QModelIndex &parent) const
+int RoomSearchResultsModel::rowCount( const QModelIndex &parent ) const
 {
     return channelList.size();
 }
 
-QVariant RoomSearchResultsModel::data(const QModelIndex &index, int role) const
+QVariant RoomSearchResultsModel::data( const QModelIndex &index, int role ) const
 {
     int row = index.row();
 
@@ -20,43 +20,43 @@ QVariant RoomSearchResultsModel::data(const QModelIndex &index, int role) const
 
     auto currentChannel = channelList.at( row );
 
-    if ( role == name ) {
-        return currentChannel->getName();
-    }
+    auto roleType = static_cast<ChannelRoles>( role );
 
-    if ( role == roomId ) {
-        return currentChannel->getRoomId();
-    }
 
-    if ( role == channelType ) {
-        return currentChannel->getType();
-    }
+    switch ( roleType ) {
+        case ChannelRoles::name:
+            return currentChannel->getName();
 
-    if ( role == unreadMessages ) {
-        return currentChannel->getUnreadMessages();
-    }
+        case ChannelRoles::roomId:
+            return currentChannel->getRoomId();
 
-    if ( role == readonly ) {
-        return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked();
-    }
+        case ChannelRoles::channelType:
+            return currentChannel->getType();
 
-    if ( role == ownerId ) {
-        return currentChannel->getOwnerName();
-    }
+        case ChannelRoles::unreadMessages:
+            return currentChannel->getUnreadMessages();
 
-    if ( role == ownerId ) {
-        return currentChannel->getOwnerId();
-    }
+        case ChannelRoles::readonly:
+            return currentChannel->getReadOnly() || currentChannel->getArchived() || currentChannel->getBlocked();
 
-    if ( role == archived ) {
-        return currentChannel->getArchived();
-    }
+        case ChannelRoles::ownerName:
+            return currentChannel->getOwnerName();
 
-    if ( role == blocked ) {
-        return currentChannel->getBlocked();
-    }
-    if( role == username ){
-        return currentChannel->getUsername();
+        case ChannelRoles::ownerId:
+            return currentChannel->getOwnerId();
+
+        case ChannelRoles::archived:
+            return currentChannel->getArchived();
+
+        case ChannelRoles::blocked:
+            return currentChannel->getBlocked();
+
+        case ChannelRoles::username:
+            return currentChannel->getUsername();
+
+        case ChannelRoles::deleted:
+            //TODO implement or remove!
+            break;
     }
 
     return QVariant();
@@ -66,17 +66,17 @@ QVariant RoomSearchResultsModel::data(const QModelIndex &index, int role) const
 QHash<int, QByteArray> RoomSearchResultsModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[name] = QByteArrayLiteral( "name" );
-    roles[roomId] =  QByteArrayLiteral( "roomId" );
-    roles[unreadMessages] = QByteArrayLiteral( "unreadMessages" );
-    roles[channelType] = QByteArrayLiteral( "type" );
-    roles[readonly] = QByteArrayLiteral( "readonly" );
-    roles[archived] = QByteArrayLiteral( "archived" );
-    roles[blocked] = QByteArrayLiteral( "blocked" );
-    roles[deleted] = QByteArrayLiteral( "deleted" );
-    roles[ownerId] = QByteArrayLiteral( "ownerId" );
-    roles[ownerName] = QByteArrayLiteral( "ownerName" );
-    roles[username] = QByteArrayLiteral("username");
+    roles[static_cast<int>( ChannelRoles::name )] = QByteArrayLiteral( "name" );
+    roles[static_cast<int>( ChannelRoles::roomId )] =  QByteArrayLiteral( "roomId" );
+    roles[static_cast<int>( ChannelRoles::unreadMessages )] = QByteArrayLiteral( "unreadMessages" );
+    roles[static_cast<int>( ChannelRoles::channelType )] = QByteArrayLiteral( "type" );
+    roles[static_cast<int>( ChannelRoles::readonly )] = QByteArrayLiteral( "readonly" );
+    roles[static_cast<int>( ChannelRoles::archived )] = QByteArrayLiteral( "archived" );
+    roles[static_cast<int>( ChannelRoles::blocked )] = QByteArrayLiteral( "blocked" );
+    roles[static_cast<int>( ChannelRoles::deleted )] = QByteArrayLiteral( "deleted" );
+    roles[static_cast<int>( ChannelRoles::ownerId )] = QByteArrayLiteral( "ownerId" );
+    roles[static_cast<int>( ChannelRoles::ownerName )] = QByteArrayLiteral( "ownerName" );
+    roles[static_cast<int>( ChannelRoles::username )] = QByteArrayLiteral( "username" );
 
     return roles;
 }
@@ -88,7 +88,7 @@ void RoomSearchResultsModel::clear()
     endResetModel();
 }
 
-void RoomSearchResultsModel::addChannels(const channelVector &pChannels)
+void RoomSearchResultsModel::addChannels( const channelVector &pChannels )
 {
     beginResetModel();
     channelList.clear();
diff --git a/CustomModels/roomsearchresultsmodel.h b/CustomModels/roomsearchresultsmodel.h
index c344ce421b2194151fea6d6af1c5f68122c86db8..8be825ad0c3b9d62af154f6fce8a7de5f5029ced 100644
--- a/CustomModels/roomsearchresultsmodel.h
+++ b/CustomModels/roomsearchresultsmodel.h
@@ -10,35 +10,35 @@ typedef QVector<QSharedPointer<RocketChatChannel>> channelVector;
 
 class RoomSearchResultsModel: public QAbstractListModel
 {
-    Q_OBJECT
-public:
-
-    enum ChannelRoles {
-        name = Qt::UserRole + 1,
-        roomId,
-        unreadMessages,
-        channelType,
-        readonly,
-        archived,
-        blocked,
-        deleted,
-        ownerId,
-        ownerName,
-        username
-    };
-
-    RoomSearchResultsModel();
-
-    // QAbstractItemModel interface
-public:
-    int rowCount(const QModelIndex &parent) const;
-    QVariant data(const QModelIndex &index, int role) const;
-    QHash<int, QByteArray> roleNames() const;
-    Q_INVOKABLE void clear();
-    Q_INVOKABLE void addChannels(const channelVector &pChannels);
-
-protected:
-    SortedVector<RocketChatChannel> channelList;
+        Q_OBJECT
+    public:
+
+        enum class ChannelRoles : int {
+            name = Qt::UserRole + 1,
+            roomId,
+            unreadMessages,
+            channelType,
+            readonly,
+            archived,
+            blocked,
+            deleted,
+            ownerId,
+            ownerName,
+            username
+        };
+
+        RoomSearchResultsModel();
+
+        // QAbstractItemModel interface
+    public:
+        int rowCount( const QModelIndex &parent ) const;
+        QVariant data( const QModelIndex &index, int role ) const;
+        QHash<int, QByteArray> roleNames() const;
+        Q_INVOKABLE void clear();
+        Q_INVOKABLE void addChannels( const channelVector &pChannels );
+
+    protected:
+        SortedVector<RocketChatChannel> channelList;
 };
 
 #endif // ROOMSEARCHRESULTSMODEL_H
diff --git a/CustomModels/usermodel.cpp b/CustomModels/usermodel.cpp
index 0a991d32d774cbfaffbef24e97e8d10a329c9d97..56c3e56deef72566d3ab86005d7e1809816fe049 100644
--- a/CustomModels/usermodel.cpp
+++ b/CustomModels/usermodel.cpp
@@ -45,36 +45,41 @@ QVariant UserModel::data( const QModelIndex &index, int role ) const
 
     auto user = userList.at( index.row() );
 
-    if ( role == UserRoles::UserName ) {
-        return user->getUserName();
-    }
+    auto roleType = static_cast<UserRoles>( role );
 
-    if ( role == UserRoles::name ) {
-        return user->getName();
-    }
+    switch ( roleType ) {
+        case UserRoles::UserName:
+            return user->getUserName();
 
-    if ( role == UserRoles::status ) {
-        int status = 2;
+        case UserRoles::name:
+            return user->getName();
 
-        switch ( user->getStatus() ) {
-            case RocketChatUser::status::ONLINE :
-                status = 0;
-                break;
+        case UserRoles::UserId:
+            return  user->getUserId();
 
-            case RocketChatUser::status::AWAY :
-                status = 1;
-                break;
+        case UserRoles::status: {
+                int status = 2;
 
-            case RocketChatUser::status::OFFLINE:
-                status = 2;
-                break;
+                switch ( user->getStatus() ) {
+                    case RocketChatUser::status::ONLINE :
+                        status = 0;
+                        break;
 
-            case RocketChatUser::status::BUSY:
-                status = 3;
-                break;
-        }
+                    case RocketChatUser::status::AWAY :
+                        status = 1;
+                        break;
 
-        return status;
+                    case RocketChatUser::status::OFFLINE:
+                        status = 2;
+                        break;
+
+                    case RocketChatUser::status::BUSY:
+                        status = 3;
+                        break;
+                }
+
+                return status;
+            }
     }
 
     return QVariant();
@@ -171,7 +176,7 @@ QSharedPointer<RocketChatUser> UserModel::getUserById( const QString &pId )
     return user;
 }
 
-void UserModel::addUser( QSharedPointer<RocketChatUser> pUser )
+void UserModel::addUser( const QSharedPointer<RocketChatUser> &pUser )
 {
     if ( !pUser.isNull() ) {
         mMutex.lock();
@@ -184,9 +189,9 @@ void UserModel::addUser( QSharedPointer<RocketChatUser> pUser )
 QHash<int, QByteArray> UserModel::roleNames() const
 {
     QHash<int, QByteArray> roles;
-    roles[UserName] = QByteArrayLiteral( "username" );
-    roles[UserId] =  QByteArrayLiteral( "userId" );
-    roles[name] = QByteArrayLiteral( "name" );
-    roles[status] = QByteArrayLiteral( "status" );
+    roles[static_cast<int>( UserRoles::UserName )] = QByteArrayLiteral( "username" );
+    roles[static_cast<int>( UserRoles::UserId )] =  QByteArrayLiteral( "userId" );
+    roles[static_cast<int>( UserRoles::name )] = QByteArrayLiteral( "name" );
+    roles[static_cast<int>( UserRoles::status )] = QByteArrayLiteral( "status" );
     return roles;
 }
diff --git a/CustomModels/usermodel.h b/CustomModels/usermodel.h
index 8bf6725282b314eff8f4ea5810e3530148008d86..e28d28f012868d3988948e0e80c59241ad6db1f4 100644
--- a/CustomModels/usermodel.h
+++ b/CustomModels/usermodel.h
@@ -39,7 +39,7 @@ class UserModel: public QAbstractListModel
 {
         Q_OBJECT
         Q_PROPERTY( QString currentChannel READ getCurrent WRITE setCurrent NOTIFY currentChannelChanged )
-        enum UserRoles {
+        enum class UserRoles : int {
             UserName = Qt::UserRole + 1,
             UserId,
             name,
@@ -48,7 +48,7 @@ class UserModel: public QAbstractListModel
     public slots:
         bool insertUser( const QString &, const QSharedPointer<RocketChatUser> & );
         void refreshUserList();
-        void addUser( QSharedPointer<RocketChatUser> pUser );
+        void addUser( const QSharedPointer<RocketChatUser> &pUser );
 
     public:
         UserModel( QObject *parent = nullptr );
diff --git a/android/androidstatusbarcolor.cpp b/android/androidstatusbarcolor.cpp
index 751f57e5cf979ae59490bb8498798cb6b47aabdd..27d79ce11f1105639640de4f2bed5349e90874a9 100644
--- a/android/androidstatusbarcolor.cpp
+++ b/android/androidstatusbarcolor.cpp
@@ -26,7 +26,7 @@ AndroidStatusBarColor::AndroidStatusBarColor()
 
 }
 
-void AndroidStatusBarColor::setStatusBarColor( QString pColor )
+void AndroidStatusBarColor::setStatusBarColor( const QString &pColor )
 {
     QAndroidJniObject jColor = QAndroidJniObject::fromString( pColor );
     QAndroidJniObject::callStaticMethod<void>(
diff --git a/android/androidstatusbarcolor.h b/android/androidstatusbarcolor.h
index a1d1bc0287e99ff185a54950329a22cef6ed5011..c5e2b6b5117f1e2abbe61a362d4b75a8266e59ba 100644
--- a/android/androidstatusbarcolor.h
+++ b/android/androidstatusbarcolor.h
@@ -29,7 +29,7 @@ class AndroidStatusBarColor
 {
     public:
         AndroidStatusBarColor();
-        void setStatusBarColor( QString pColor );
+        void setStatusBarColor( const QString &pColor );
 };
 
 #endif // ANDROIDSTATUSBARCOLOR_H
diff --git a/api/messagelistener.h b/api/messagelistener.h
index 7e2fb202fe895cd2d97f4516ee1a381c1d7df01f..31c37ee50ed6e7ee320cf4919f35691efa860f7f 100644
--- a/api/messagelistener.h
+++ b/api/messagelistener.h
@@ -6,10 +6,11 @@
 #include <QObject>
 
 
-class MessageListener: public QObject{
-Q_OBJECT
-public:
-    virtual bool handlesMessage(QJsonObject object) = 0;
+class MessageListener: public QObject
+{
+        Q_OBJECT
+    public:
+        virtual bool handlesMessage( const QJsonObject &object ) = 0;
 };
 
 #endif // MESSAGELISTENER_H
diff --git a/container/observablelist.h b/container/observablelist.h
index 4518f8d50cd8e7430f066b34ae93077f26488b8a..0a3a1a6257708b361b6834fe3b9aa96666626ff9 100644
--- a/container/observablelist.h
+++ b/container/observablelist.h
@@ -27,11 +27,11 @@ class ObservableList : public QObject
 {
         Q_OBJECT
     public:
-        explicit ObservableList( QObject *parent = 0 );
+        explicit ObservableList( QObject *parent = nullptr );
     private:
         QString name;
     signals:
-        void added( int row, ObservableList &list );
+        void added( int row, const ObservableList &list );
 };
 
 #endif // OBSERVABLELIST_H
diff --git a/container/sortedvector.cpp b/container/sortedvector.cpp
index 7f29ce2014b395936e07857caa34aff99e8fae7e..87cfc03a2d4a24a1bb335cfe0d203408bcb1047d 100644
--- a/container/sortedvector.cpp
+++ b/container/sortedvector.cpp
@@ -24,7 +24,7 @@
 
 
 template<typename T>
-int SortedVector<T>::insertSort( QSharedPointer<T> pointer )
+int SortedVector<T>::insertSort( const QSharedPointer<T> &pointer )
 {
     int row = -1;
 
@@ -51,7 +51,7 @@ int SortedVector<T>::insertSort( QSharedPointer<T> pointer )
 }
 
 template<typename T>
-int SortedVector<T>::findPosition( QSharedPointer<T> pointer )
+int SortedVector<T>::findPosition( const QSharedPointer<T> &pointer ) const
 {
     int row = -1;
 
diff --git a/container/sortedvector.h b/container/sortedvector.h
index ae03f2be926d875a8bfec346cca4e7dabe5d2d66..7486788e3290c10272743f8766976544845db489 100644
--- a/container/sortedvector.h
+++ b/container/sortedvector.h
@@ -27,9 +27,9 @@
 template<typename T> class SortedVector : public QVector<QSharedPointer<T>>
 {
     public:
-        int insertSort( QSharedPointer<T> );
-        int findPosition( QSharedPointer<T> );
-        bool operator =( QVector<QSharedPointer<T>> o )
+        int insertSort( const QSharedPointer<T> & );
+        int findPosition( const QSharedPointer<T> & ) const;
+        bool operator =( const QVector<QSharedPointer<T>> &o )
         {
             this->clear();
             this->append( o );
diff --git a/ddpRequests/rocketchatgetroombyid.cpp b/ddpRequests/rocketchatgetroombyid.cpp
index bad293e4c33ed3ecfdb58f23947ca92591fc0ae8..94079d669a5a4df21d2037831601672a64c10684 100644
--- a/ddpRequests/rocketchatgetroombyid.cpp
+++ b/ddpRequests/rocketchatgetroombyid.cpp
@@ -1,12 +1,12 @@
 #include "rocketchatgetroombyid.h"
 
-RocketChatGetRoomById::RocketChatGetRoomById(const QString &pId)
+RocketChatGetRoomById::RocketChatGetRoomById( const QString &pId )
 {
     QJsonArray params = {pId};
     buildRequest( QStringLiteral( "getRoomNameById" ), params );
 }
 
-RocketChatGetRoomById::RocketChatGetRoomById(const QString &pId, DdpCallback &pSuccess):RocketChatGetRoomById(pId)
+RocketChatGetRoomById::RocketChatGetRoomById( const QString &pId, const DdpCallback &pSuccess ): RocketChatGetRoomById( pId )
 {
-    setSuccess(pSuccess);
+    setSuccess( pSuccess );
 }
diff --git a/ddpRequests/rocketchatgetroombyid.h b/ddpRequests/rocketchatgetroombyid.h
index 09042e4645f86179d268cb2f87eeedba7b455c73..41ccefbd8a1583e49865607175f5b25f841eda1b 100644
--- a/ddpRequests/rocketchatgetroombyid.h
+++ b/ddpRequests/rocketchatgetroombyid.h
@@ -5,9 +5,9 @@
 
 class RocketChatGetRoomById: public DDPMethodRequest
 {
-public:
-    RocketChatGetRoomById(const QString &pId);
-    RocketChatGetRoomById(const QString &pId, DdpCallback &pSuccess);
+    public:
+        RocketChatGetRoomById( const QString &pId );
+        RocketChatGetRoomById( const QString &pId, const DdpCallback &pSuccess );
 
 };
 
diff --git a/ddpRequests/rocketchatgetroomidbynameorid.cpp b/ddpRequests/rocketchatgetroomidbynameorid.cpp
index 01e43dcf31f9338d72342866eb48e91dd5109e1b..a6cf5a360e052846a7ee47af238e54e91674c375 100644
--- a/ddpRequests/rocketchatgetroomidbynameorid.cpp
+++ b/ddpRequests/rocketchatgetroomidbynameorid.cpp
@@ -1,12 +1,12 @@
 #include "rocketchatgetroomidbynameorid.h"
 
-RocketChatGetRoomIdByNameOrId::RocketChatGetRoomIdByNameOrId(const QString &pName)
+RocketChatGetRoomIdByNameOrId::RocketChatGetRoomIdByNameOrId( const QString &pName )
 {
     QJsonArray params = {pName};
     buildRequest( QStringLiteral( "getRoomIdByNameOrId" ), params );
 }
 
-RocketChatGetRoomIdByNameOrId::RocketChatGetRoomIdByNameOrId(const QString &pName, DdpCallback success):RocketChatGetRoomIdByNameOrId(pName)
+RocketChatGetRoomIdByNameOrId::RocketChatGetRoomIdByNameOrId( const QString &pName, const DdpCallback &success ): RocketChatGetRoomIdByNameOrId( pName )
 {
-    setSuccess(success);
+    setSuccess( success );
 }
diff --git a/ddpRequests/rocketchatgetroomidbynameorid.h b/ddpRequests/rocketchatgetroomidbynameorid.h
index 5650d0524b1085e90a87dd92afb44d62ec681c65..4d493506c18246db5de77d45896a32d6ca36969e 100644
--- a/ddpRequests/rocketchatgetroomidbynameorid.h
+++ b/ddpRequests/rocketchatgetroomidbynameorid.h
@@ -3,11 +3,11 @@
 
 #include "ddpmethodrequest.h"
 
-class RocketChatGetRoomIdByNameOrId:public DDPMethodRequest
+class RocketChatGetRoomIdByNameOrId: public DDPMethodRequest
 {
-public:
-    RocketChatGetRoomIdByNameOrId(const QString &pName);
-    RocketChatGetRoomIdByNameOrId(const QString &pName, DdpCallback success);
+    public:
+        RocketChatGetRoomIdByNameOrId( const QString &pName );
+        RocketChatGetRoomIdByNameOrId( const QString &pName, const DdpCallback &success );
 
 };
 
diff --git a/ddpRequests/rocketchatjoinroomrequest.cpp b/ddpRequests/rocketchatjoinroomrequest.cpp
index 0dd8a34490035e1842b9a124c19326d2ad864c4f..5ea29a017b2a174945ac7cfe16ef11e49ca76fa5 100644
--- a/ddpRequests/rocketchatjoinroomrequest.cpp
+++ b/ddpRequests/rocketchatjoinroomrequest.cpp
@@ -1,12 +1,12 @@
 #include "rocketchatjoinroomrequest.h"
 
-RocketChatJoinRoomRequest::RocketChatJoinRoomRequest(const QString &pRoomId)
+RocketChatJoinRoomRequest::RocketChatJoinRoomRequest( const QString &pRoomId )
 {
     QJsonArray params = {pRoomId, QJsonValue::Null};
     buildRequest( QStringLiteral( "joinRoom" ), params );
 }
 
-RocketChatJoinRoomRequest::RocketChatJoinRoomRequest(const QString &pRoomId, DdpCallback pSuccess):RocketChatJoinRoomRequest(pRoomId)
+RocketChatJoinRoomRequest::RocketChatJoinRoomRequest( const QString &pRoomId, const DdpCallback &pSuccess ): RocketChatJoinRoomRequest( pRoomId )
 {
-    setSuccess(pSuccess);
+    setSuccess( pSuccess );
 }
diff --git a/ddpRequests/rocketchatjoinroomrequest.h b/ddpRequests/rocketchatjoinroomrequest.h
index f17506a6909fdd4afe4e6b68ec86487e4eb006ae..de3b449f3ae1788dfec096802d67406112e1dea0 100644
--- a/ddpRequests/rocketchatjoinroomrequest.h
+++ b/ddpRequests/rocketchatjoinroomrequest.h
@@ -5,9 +5,9 @@
 
 class RocketChatJoinRoomRequest: DDPMethodRequest
 {
-public:
-    RocketChatJoinRoomRequest(const QString &pRoomId);
-    RocketChatJoinRoomRequest(const QString &pRoomId, DdpCallback pSuccess);
+    public:
+        RocketChatJoinRoomRequest( const QString &pRoomId );
+        RocketChatJoinRoomRequest( const QString &pRoomId, const DdpCallback &pSuccess );
 
 };
 
diff --git a/fileuploader.cpp b/fileuploader.cpp
index 545e29a9bdd900ca8f0dc44904e206eb23a178b5..8e7e4e56ee36a7fc5b5a5769504a3f617c3028c0 100755
--- a/fileuploader.cpp
+++ b/fileuploader.cpp
@@ -22,7 +22,7 @@
 
 #include "fileuploader.h"
 
-FileUploader::FileUploader( RocketChatServerData *pServer, QUrl pUri, QString pChannelId )
+FileUploader::FileUploader( RocketChatServerData *pServer, const QUrl &pUri, const QString &pChannelId )
 {
     this->mServer = pServer;
     this->mUri = pUri;
@@ -50,7 +50,7 @@ FileUploader::FileUploader( RocketChatServerData *pServer, QUrl pUri, QString pC
     }
 }
 
-void FileUploader::upload( std::function<void( void )> pCleanup )
+void FileUploader::upload( const std::function<void( void )> &pCleanup )
 {
     this->mCleanUp = pCleanup;
     DdpCallback success = [ & ]( QJsonObject response, MeteorDDP * ddp ) {
@@ -90,7 +90,7 @@ void FileUploader::cancel()
     }
 }
 
-void FileUploader::onUfsCreated( QJsonObject pResponse )
+void FileUploader::onUfsCreated( const QJsonObject &pResponse )
 {
     if ( pResponse.contains( "result" ) ) {
         QJsonObject result = pResponse["result"].toObject();
@@ -152,11 +152,11 @@ void FileUploader::onUfsCreated( QJsonObject pResponse )
     }
 }
 
-void FileUploader::onUploadCompleted( QJsonObject pResponse )
+void FileUploader::onUploadCompleted( const QJsonObject &pResponse )
 {
     Q_UNUSED( pResponse );
     qDebug() << "upload completed";
-    QString store = QStringLiteral("rocketchat_uploads");
+    QString store = QStringLiteral( "rocketchat_uploads" );
     int major = std::get<0>( RocketChatServerConfig::serverVersion );
     int minor = std::get<1>( RocketChatServerConfig::serverVersion );
     int patch = std::get<2>( RocketChatServerConfig::serverVersion );
diff --git a/fileuploader.h b/fileuploader.h
index 65f17f3d3d89d248456cd7e7884ec67351ee2d7b..fe4631470e16a0c2c151a026a2c305e2c7567dfe 100755
--- a/fileuploader.h
+++ b/fileuploader.h
@@ -39,14 +39,14 @@ class FileUploader : public QObject
 {
         Q_OBJECT
     public:
-        FileUploader( RocketChatServerData *pServer, QUrl pUri, QString pChannelId );
-        void upload( std::function<void( void )> );
+        FileUploader( RocketChatServerData *pServer, const QUrl &pUri, const QString &pChannelId );
+        void upload( const std::function<void( void )> & );
         void cancel( void );
         QString getFileId() const;
 
     protected:
-        void onUfsCreated( QJsonObject pResponse );
-        void onUploadCompleted( QJsonObject pResponse );
+        void onUfsCreated( const QJsonObject &pResponse );
+        void onUploadCompleted( const QJsonObject &pResponse );
         void nextRequest( void );
 
         QMutex mLock;
@@ -65,10 +65,10 @@ class FileUploader : public QObject
         bool mCanceled = 0;
         bool mErrorStatus = 0;
     signals:
-        void ufsCreated( QString mFileId );
+        void ufsCreated( const QString &mFileId );
         void progressChanged( double progress );
         void fileuploadCompleted( void );
-        void error( QString erorrString );
+        void error( const QString &erorrString );
     public slots:
 
 };
diff --git a/notifications/android/googlepushnotifications.cpp b/notifications/android/googlepushnotifications.cpp
index 9ad8395e9d366154a6f4a05c532253e7ff53299f..0cf75b50ab28f30784a6622c0691be57f6e060d9 100755
--- a/notifications/android/googlepushnotifications.cpp
+++ b/notifications/android/googlepushnotifications.cpp
@@ -47,7 +47,7 @@ QString GooglePushNotifications::getGcmRegistrationId() const
     return mGcmRegistrationId;
 }
 
-void GooglePushNotifications::setGcmRegistrationId( QString pRegistrationId )
+void GooglePushNotifications::setGcmRegistrationId( const QString &pRegistrationId )
 {
     if ( !pRegistrationId.isEmpty() ) {
         if ( mGcmRegistrationId != pRegistrationId ) {
@@ -57,9 +57,9 @@ void GooglePushNotifications::setGcmRegistrationId( QString pRegistrationId )
     }
 }
 
-void GooglePushNotifications::pushMessageReceived( QString pServer, QString pRid, QString pName, QString pType )
+void GooglePushNotifications::pushMessageReceived( const QString &pServer, const QString &pRid, const QString &pName, const QString &pType )
 {
-    qDebug()<<"push message received";
+    qDebug() << "push message received";
     emit messageReceived( pServer, pRid, pName, pType );
 }
 
diff --git a/notifications/android/googlepushnotifications.h b/notifications/android/googlepushnotifications.h
index 276fd932b0e58ecc1d6118f874758f529eb103d1..c024240985c2210c66b9b77de1bdd1b75e920dd0 100755
--- a/notifications/android/googlepushnotifications.h
+++ b/notifications/android/googlepushnotifications.h
@@ -37,9 +37,9 @@ class GooglePushNotifications: public NotificationAbstract
         //    void setGcmSenderId(const QString &pValue);
 
         QString getGcmRegistrationId() const;
-        void setGcmRegistrationId( QString pValue );
+        void setGcmRegistrationId( const QString &pValue );
 
-        void pushMessageReceived( QString pServer, QString pRid, QString pName, QString pType );
+        void pushMessageReceived( const QString &pServer, const QString &pRid, const QString &pName, const QString &pType );
 
         void init();
 
diff --git a/notifications/notificationabstract.h b/notifications/notificationabstract.h
index 81f4ef1a6c11c3ace0d5cb324131a29952488874..4de857478df7d9a1b2dbe3fbb345542005af6ff8 100755
--- a/notifications/notificationabstract.h
+++ b/notifications/notificationabstract.h
@@ -44,9 +44,9 @@ class NotificationAbstract : public QObject
         QString mToken;
 
     signals:
-        void tokenReceived( QString pToken );
-        void messageReceived( QString pServer, QString pRid, QString pName, QString pType );
-        void switchChannelByName( QString pChannel );
+        void tokenReceived( const QString &pToken );
+        void messageReceived( const QString &pServer, const QString &pRid, const QString &pName, const QString &pType );
+        void switchChannelByName( const QString &pChannel );
 
 };
 
diff --git a/repos/abstractbaserepository.cpp b/repos/abstractbaserepository.cpp
index 4d621ee6425c3292d261785a3bc5eb7cc682802c..e1e5992c2ca6f84d5dfa065d990cfbb39e9ef257 100755
--- a/repos/abstractbaserepository.cpp
+++ b/repos/abstractbaserepository.cpp
@@ -25,7 +25,7 @@
 #include "abstractbaserepository.h"
 
 template <typename T>
-bool AbstractBaseRepository<T>::add( QString pId, QSharedPointer<T> pElement )
+bool AbstractBaseRepository<T>::add( const QString &pId, const QSharedPointer<T> &pElement )
 {
     if ( !mElements.contains( pId ) ) {
         mElements[pId] = pElement;
@@ -35,23 +35,23 @@ bool AbstractBaseRepository<T>::add( QString pId, QSharedPointer<T> pElement )
     return false;
 }
 template <typename T>
-void AbstractBaseRepository<T>::remove( QString pId )
+void AbstractBaseRepository<T>::remove( const QString &pId )
 {
     mElements.remove( pId );
 }
 
 template <typename T>
-void AbstractBaseRepository<T>::set( QString pId, QSharedPointer<T> pElement )
+void AbstractBaseRepository<T>::set( const QString &pId, const QSharedPointer<T> &pElement )
 {
     mElements[pId] = pElement;
 }
 template <typename T>
-bool AbstractBaseRepository<T>::contains( QString pId )
+bool AbstractBaseRepository<T>::contains( const QString &pId )
 {
     return mElements.contains( pId );
 }
 template <typename T>
-QSharedPointer<T> AbstractBaseRepository<T>::get( QString pId )
+QSharedPointer<T> AbstractBaseRepository<T>::get( const QString &pId )
 {
     if ( mElements.contains( pId ) ) {
         return mElements[pId];
@@ -72,7 +72,7 @@ int AbstractBaseRepository<T>::size()
 }
 
 template <typename T>
-bool AbstractBaseRepository<T>::isEmpty()
+bool AbstractBaseRepository<T>::isEmpty() const
 {
     return mElements.empty();
 }
diff --git a/repos/abstractbaserepository.h b/repos/abstractbaserepository.h
index f86273f608a6ef032777b13526f7e3b15f3a65a8..bc7115a490df3a5ccba5c57f6189ff6d0f7d87b4 100755
--- a/repos/abstractbaserepository.h
+++ b/repos/abstractbaserepository.h
@@ -31,11 +31,11 @@ using namespace std;
 template<typename T> class AbstractBaseRepository
 {
     public:
-        bool add( QString pId, QSharedPointer<T> );
-        void remove( QString pId );
-        void set( QString pId, QSharedPointer<T> );
-        bool contains( QString pId ) ;
-        QSharedPointer<T> get( QString pId );
+        bool add( const QString &pId, const QSharedPointer<T> & );
+        void remove( const QString &pId );
+        void set( const QString &pId, const QSharedPointer<T> & );
+        bool contains( const QString &pId ) ;
+        QSharedPointer<T> get( const QString &pId );
         QMap<QString, T> list();
         QHash<QString, QSharedPointer<T> > getElements() const;
         int size();
@@ -45,7 +45,7 @@ template<typename T> class AbstractBaseRepository
           const T operator[](QString pArgument) const{
               return mElements[pArgument];
           }*/
-        bool isEmpty();
+        bool isEmpty() const;
         void clear( void );
     protected:
         QHash<QString, QSharedPointer<T> > mElements;
diff --git a/repos/channelrepository.cpp b/repos/channelrepository.cpp
index b6fa758285d7762664f521884e59e2614b9de9d2..03216e0dfb5d0d1b5cfff267837f2bb8cf275b71 100755
--- a/repos/channelrepository.cpp
+++ b/repos/channelrepository.cpp
@@ -27,7 +27,7 @@ ChannelRepository::ChannelRepository( ):
     mElements.reserve( 50 );
 }
 
-bool ChannelRepository::add( QString id, QSharedPointer<RocketChatChannel> msg )
+bool ChannelRepository::add( const QString &id, const QSharedPointer<RocketChatChannel> &msg )
 {
     connect( msg.data(), &RocketChatChannel::messageAdded, this, &ChannelRepository::receiveTimestamp, Qt::UniqueConnection );
     QString type = msg->getType();
@@ -45,7 +45,7 @@ bool ChannelRepository::add( QString id, QSharedPointer<RocketChatChannel> msg )
     return AbstractBaseRepository::add( id, msg );
 }
 
-bool ChannelRepository::add( QSharedPointer<RocketChatChannel> pChannel )
+bool ChannelRepository::add( const QSharedPointer<RocketChatChannel> &pChannel )
 {
     QString id = pChannel->getRoomId();
     mNameIndex[pChannel->getName()] = pChannel;
@@ -57,7 +57,7 @@ ChannelRepository::~ChannelRepository()
 
 }
 
-void ChannelRepository::receiveTimestamp( QString pId, qint64 pTimestamp )
+void ChannelRepository::receiveTimestamp( const QString &pId, qint64 pTimestamp )
 {
     QSharedPointer<RocketChatChannel> channel = get( pId );
 
@@ -73,7 +73,7 @@ void ChannelRepository::receiveTimestamp( QString pId, qint64 pTimestamp )
     emit orderChanged( pId );
 }
 
-QSharedPointer<RocketChatChannel> ChannelRepository::getChannelByName( QString pName )
+QSharedPointer<RocketChatChannel> ChannelRepository::getChannelByName( const QString &pName )
 {
     if ( mNameIndex.contains( pName ) ) {
         return mNameIndex[pName];
@@ -82,7 +82,7 @@ QSharedPointer<RocketChatChannel> ChannelRepository::getChannelByName( QString p
     }
 }
 
-unsigned long ChannelRepository::getYoungestMessageDate()
+unsigned long ChannelRepository::getYoungestMessageDate() const
 {
     long oldest = LONG_MAX;
 
@@ -104,10 +104,10 @@ unsigned long ChannelRepository::getYoungestMessageDate()
     }
 
 
-    return oldest;
+    return static_cast<unsigned long>( oldest );
 }
 
-unsigned long ChannelRepository::getOldestMessageDate()
+unsigned long ChannelRepository::getOldestMessageDate() const
 {
     long youngest = 0;
 
@@ -121,6 +121,6 @@ unsigned long ChannelRepository::getOldestMessageDate()
         }
     }
 
-    return youngest;
+    return static_cast<unsigned long>( youngest );
 }
 
diff --git a/repos/channelrepository.h b/repos/channelrepository.h
index 49e7396f17bed12a920809032d747778b40faf59..7f9445c0055857792cc70e0cb6255fb6dd4e0eaa 100755
--- a/repos/channelrepository.h
+++ b/repos/channelrepository.h
@@ -40,12 +40,12 @@ class ChannelRepository : public QObject, public AbstractBaseRepository<RocketCh
     public:
 
         explicit ChannelRepository( );
-        unsigned long  getYoungestMessageDate();
-        unsigned long  getOldestMessageDate();
-        bool add( QString id, QSharedPointer<RocketChatChannel> );
-        bool add( QSharedPointer<RocketChatChannel> pChannel );
-        void receiveTimestamp( QString pId, qint64 pTimestamp );
-        QSharedPointer<RocketChatChannel> getChannelByName( QString pName );
+        unsigned long  getYoungestMessageDate() const;
+        unsigned long  getOldestMessageDate() const;
+        bool add( const QString &id, const QSharedPointer<RocketChatChannel> & );
+        bool add( const QSharedPointer<RocketChatChannel> &pChannel );
+        void receiveTimestamp( const QString &pId, qint64 pTimestamp );
+        QSharedPointer<RocketChatChannel> getChannelByName( const QString &pName );
         ~ChannelRepository();
     private:
         QHash<QSharedPointer<RocketChatChannel>, qint64 >  mChannelTimeIndex;
diff --git a/repos/emojirepo.cpp b/repos/emojirepo.cpp
index 05cd4a8c8d54acccf170d28fad77cebd0f20bf42..04a577cf314862ff0c3de570e69b3506df639606 100644
--- a/repos/emojirepo.cpp
+++ b/repos/emojirepo.cpp
@@ -27,12 +27,12 @@ EmojiRepo::EmojiRepo()
     mElements.reserve( 3000 );
 }
 
-bool EmojiRepo::add( QSharedPointer<Emoji> pEmoji )
+bool EmojiRepo::add( const QSharedPointer<Emoji> &pEmoji )
 {
     return add( pEmoji->getIdentifier(), pEmoji );
 }
 
-bool EmojiRepo::add( QString pId, QSharedPointer<Emoji> pEmoji )
+bool EmojiRepo::add( const QString &pId, const QSharedPointer<Emoji> &pEmoji )
 {
     if ( !pEmoji.isNull() ) {
         if ( !mEmojisOrdered.isEmpty() ) {
diff --git a/repos/emojirepo.h b/repos/emojirepo.h
index 8652aa39a19e85413347fb461e8d8382096ff85d..2731183c09d631247f0cf81a5ef43f781bc15fce 100644
--- a/repos/emojirepo.h
+++ b/repos/emojirepo.h
@@ -34,8 +34,8 @@ class EmojiRepo : public QObject, public AbstractBaseRepository<Emoji>
 {
     public:
         EmojiRepo();
-        bool add( QSharedPointer<Emoji> pEmoji );
-        bool add( QString pId, QSharedPointer<Emoji> pEmoji );
+        bool add( const QSharedPointer<Emoji> &pEmoji );
+        bool add( const QString &pId, const QSharedPointer<Emoji> &pEmoji );
 
         QMap<int, QSharedPointer<Emoji> > emojisOrdered() const;
 
diff --git a/repos/entities/emoji.cpp b/repos/entities/emoji.cpp
index 5fd1be479e7bda5fafd380c075f59706922a4f42..2bb9f0e574c724ea4ebacef0f6733ed1a1733448 100644
--- a/repos/entities/emoji.cpp
+++ b/repos/entities/emoji.cpp
@@ -21,7 +21,7 @@
 
 #include "emoji.h"
 
-Emoji::Emoji( QString name, QString extension, QString category ): mCategory( category )
+Emoji::Emoji( const QString &name, const QString &extension, const QString &category ): mCategory( category )
 {
 
     this->mIdentifier = ':' + name + ':';
@@ -30,7 +30,7 @@ Emoji::Emoji( QString name, QString extension, QString category ): mCategory( ca
     this->mType = QStringLiteral( "emoji" );
 }
 
-Emoji::Emoji( QString name, QString category, QString filePath, QString html ): mCategory( category )
+Emoji::Emoji( const QString &name, const QString &category, const QString &filePath, const QString &html ): mCategory( category )
 {
     this->mIdentifier = name;
     QFileInfo fileInfo( filePath );
@@ -39,7 +39,7 @@ Emoji::Emoji( QString name, QString category, QString filePath, QString html ):
     mExtension = fileInfo.completeSuffix();
 }
 
-Emoji::Emoji( QString name, QString category, QString filePath, QString html, QString unicode ): mCategory( category ), mUnicodeChar( unicode )
+Emoji::Emoji( const QString &name, const QString &category, const QString &filePath, const QString &html, const QString &unicode ): mCategory( category ), mUnicodeChar( unicode )
 {
     this->mIdentifier = name;
     QFileInfo fileInfo( filePath );
@@ -48,7 +48,7 @@ Emoji::Emoji( QString name, QString category, QString filePath, QString html, QS
     mExtension = fileInfo.completeSuffix();
 }
 
-Emoji::Emoji( QString name, QString category, QString filePath, QString html, QString unicode, int order ): mCategory( category ), mUnicodeChar( unicode ), mOrder( order )
+Emoji::Emoji( const QString &name, const QString &category, const QString &filePath, const QString &html, const QString &unicode, int order ): mCategory( category ), mUnicodeChar( unicode ), mOrder( order )
 {
     this->mIdentifier = name;
     QFileInfo fileInfo( filePath );
diff --git a/repos/entities/emoji.h b/repos/entities/emoji.h
index 1a830a3083dd4410f74f42c04e27c42b73074ab8..79cd3f19ffe4e25fa39ff958e83da75f51e8221f 100644
--- a/repos/entities/emoji.h
+++ b/repos/entities/emoji.h
@@ -29,10 +29,10 @@
 class Emoji : public TempFile
 {
     public:
-        Emoji( QString name, QString extension, QString category );
-        Emoji( QString name, QString category, QString file, QString html );
-        Emoji( QString name, QString category, QString file, QString html, QString unicode );
-        Emoji( QString name, QString category, QString file, QString html, QString unicode, int order );
+        Emoji( const QString &name, const QString &extension, const QString &category );
+        Emoji( const QString &name, const QString &category, const QString &file, const QString &html );
+        Emoji( const QString &name, const QString &category, const QString &file, const QString &html, const QString &unicode );
+        Emoji( const QString &name, const QString &category, const QString &file, const QString &html, const QString &unicode, int order );
 
         QString getIdentifier() const;
         QVariantMap toQVariantMap();
diff --git a/repos/entities/rocketchatattachment.cpp b/repos/entities/rocketchatattachment.cpp
index 5dc6a255a877d7e40542a9ce0fa36fb234eacbf2..33e5af2cab689ec0c9a092e1ef308f4b87a1a647 100644
--- a/repos/entities/rocketchatattachment.cpp
+++ b/repos/entities/rocketchatattachment.cpp
@@ -21,7 +21,7 @@
 
 #include "rocketchatattachment.h"
 
-RocketChatAttachment::RocketChatAttachment( QString pFileUrl, QString pType, QString pTitle )
+RocketChatAttachment::RocketChatAttachment( const QString &pFileUrl, const QString &pType, const QString &pTitle )
 {
     this->mUrl   =    pFileUrl;
     this->mType  =    pType;
diff --git a/repos/entities/rocketchatattachment.h b/repos/entities/rocketchatattachment.h
index 259c324dea65ddab36694d7c61db96fd4cb671d9..0970e411ce4f87ca983731cfef27b1742cbebd5b 100644
--- a/repos/entities/rocketchatattachment.h
+++ b/repos/entities/rocketchatattachment.h
@@ -26,9 +26,9 @@
 
 class RocketChatAttachment : public QObject
 {
-    Q_OBJECT
+        Q_OBJECT
     public:
-        RocketChatAttachment( QString pFileUrl, QString pType, QString pTitle );
+        RocketChatAttachment( const QString &pFileUrl, const QString &pType, const QString &pTitle );
 
         QString getUrl() const;
         QString getType() const;
diff --git a/repos/entities/rocketchatchannel.cpp b/repos/entities/rocketchatchannel.cpp
index 876b0220570d6723929e4c3f84406f98f8fd3edc..0a827e6552f8fa69683badf2ad982559287e3fef 100755
--- a/repos/entities/rocketchatchannel.cpp
+++ b/repos/entities/rocketchatchannel.cpp
@@ -24,7 +24,7 @@
 
 
 
-RocketChatChannel::RocketChatChannel( RocketChatServerData *pServer, MessageService *pMessageService, QString pRoomId, QString pName, QString pType )
+RocketChatChannel::RocketChatChannel( RocketChatServerData *pServer, MessageService *pMessageService, const QString &pRoomId, const QString &pName, const QString &pType )
 {
     Q_UNUSED( pServer )
     Q_UNUSED( pMessageService )
@@ -43,7 +43,7 @@ RocketChatChannel::~RocketChatChannel()
     mUsers.clear();
 }
 
-bool RocketChatChannel::addMessage( const ChatMessage pMessage, bool nosignal )
+bool RocketChatChannel::addMessage( const ChatMessage &pMessage, bool nosignal )
 {
     if ( !pMessage.isNull() ) {
         if ( mMessages.add( pMessage->getId(), pMessage ) ) {
@@ -88,7 +88,7 @@ void RocketChatChannel::setName( const QString &value )
 }
 
 
-bool RocketChatChannel::addUser( QSharedPointer<RocketChatUser> user )
+bool RocketChatChannel::addUser( const QSharedPointer<RocketChatUser> &user )
 {
     QString userId = user->getUserId();
 
@@ -128,6 +128,14 @@ ChatMessage RocketChatChannel::getYoungestMessage()
         return ChatMessage( nullptr );
     }
 }
+ChatMessage RocketChatChannel::getYoungestMessage() const
+{
+    if ( !mMessages.isEmpty() ) {
+        return mMessages.youngest();
+    } else {
+        return ChatMessage( nullptr );
+    }
+}
 
 ChatMessage RocketChatChannel::getOldestMessage()
 {
@@ -143,7 +151,7 @@ MessageRepository *RocketChatChannel::getMessageRepo()
     return &mMessages;
 }
 
-QList<QSharedPointer<RocketChatMessage>> RocketChatChannel::addMessages( QList<QSharedPointer<RocketChatMessage>> messagesList )
+QList<QSharedPointer<RocketChatMessage>> RocketChatChannel::addMessages( const QList<QSharedPointer<RocketChatMessage>> &messagesList )
 {
     QList<QSharedPointer<RocketChatMessage>> newMessages;
 
@@ -228,12 +236,12 @@ void RocketChatChannel::setSelfMuted( bool value )
     mSelfMuted = value;
 }
 
-int RocketChatChannel::operator >( RocketChatChannel &channel )
+int RocketChatChannel::operator >( const RocketChatChannel &channel ) const
 {
     auto youngestMessage = this->getYoungestMessage();
     auto youngestMessage2 = channel.getYoungestMessage();
-    int timestamp1 = youngestMessage.isNull() ? 0 : youngestMessage->getTimestamp() ;
-    int timestamp2 = youngestMessage2.isNull() ? 0 : youngestMessage2->getTimestamp() ;
+    auto timestamp1 = youngestMessage.isNull() ? 0 :  youngestMessage->getTimestamp() ;
+    auto timestamp2 = youngestMessage2.isNull() ? 0 :  youngestMessage2->getTimestamp() ;
     return timestamp1 > timestamp2;
 }
 
diff --git a/repos/entities/rocketchatchannel.h b/repos/entities/rocketchatchannel.h
index e91ce9800e5489912cc90149c0d7f4a92c6ec7b9..eff3dd7380dc99a90caaef8e7a8071fb9cb3c4bf 100755
--- a/repos/entities/rocketchatchannel.h
+++ b/repos/entities/rocketchatchannel.h
@@ -60,26 +60,28 @@ class RocketChatChannel : public QObject
 {
         Q_OBJECT
     public:
-        RocketChatChannel( RocketChatServerData *pServer, MessageService *pMessageService, QString pRoomId, QString pName, QString pType );
+        RocketChatChannel( RocketChatServerData *pServer, MessageService *pMessageService, const QString &pRoomId, const QString &pName, const QString &pType );
         RocketChatChannel( );
 
         ~RocketChatChannel();
 
-        bool addMessage( const ChatMessage, bool nosiginal = false );
+        bool addMessage( const ChatMessage &, bool nosiginal = false );
         void setRoomId( const QString &pValue );
         void setName( const QString &pValue );
         void setUsers( const QMap<QString, QSharedPointer<RocketChatUser> > &pValue );
         void setUsers( const QList<QSharedPointer<RocketChatUser>> &pValue );
         void setJoined( bool pValue );
         void setUnreadMessages( unsigned int pValue );
-        bool addUser( QSharedPointer<RocketChatUser> pUser );
-        QList<QSharedPointer<RocketChatMessage>> addMessages( QList<QSharedPointer<RocketChatMessage>> pMessagesList );
+        bool addUser( const QSharedPointer<RocketChatUser> &pUser );
+        QList<QSharedPointer<RocketChatMessage>> addMessages( const QList<QSharedPointer<RocketChatMessage>> &pMessagesList );
 
         QHash<QString, QSharedPointer< RocketChatMessage >> getMessages() const;
         QString getRoomId() const;
         QString getName() const;
         QMap<QString, QSharedPointer<RocketChatUser> > getUsers() const;
         ChatMessage getYoungestMessage();
+        ChatMessage getYoungestMessage() const;
+
         ChatMessage getOldestMessage();
         MessageRepository *getMessageRepo( void );
         bool getJoined() const;
@@ -101,7 +103,7 @@ class RocketChatChannel : public QObject
         void setSelfMuted( bool pValue );
 
         void setParentRepo( ChannelRepository *pParentRepo );
-        int operator >( RocketChatChannel &channel );
+        int operator >( const RocketChatChannel &channel ) const;
 
         bool getBlocked() const;
         void setBlocked( bool blocked );
@@ -144,11 +146,11 @@ class RocketChatChannel : public QObject
         unsigned int mUnreadMessages = 0;
         bool mSelfMuted = false;
     signals:
-        void messageListReceived( QString pChannelId, QList<ChatMessage> pMessages );
-        void messageAdded( QString id, qint64 timestamp );
-        void unreadMessagesChanged( QString id, int number );
+        void messageListReceived( const QString &pChannelId, const QList<ChatMessage> &pMessages );
+        void messageAdded( const QString &id, qint64 timestamp );
+        void unreadMessagesChanged( const QString &id, int number );
         void channelDeleted( const QString &pId, bool deleted );
-        void dataChanged( QString id, QString property );
+        void dataChanged( const QString &id, const QString &property );
         void chatPartnerStatusChanged();
 
 };
diff --git a/repos/entities/rocketchatmessage.cpp b/repos/entities/rocketchatmessage.cpp
index 4392f198078425c338ab9f3a49a01ce1dd2e0afa..9dc0db065ba4d57d399105cbd5d0a835bb1bb71b 100755
--- a/repos/entities/rocketchatmessage.cpp
+++ b/repos/entities/rocketchatmessage.cpp
@@ -21,14 +21,14 @@
 
 #include "rocketchatmessage.h"
 
-RocketChatMessage::RocketChatMessage( QJsonObject data, unsigned long timestamp, Type type ): timestamp( timestamp ), data( data ), type( type )
+RocketChatMessage::RocketChatMessage( const QJsonObject &data, unsigned long timestamp, Type type ): timestamp( timestamp ), data( data ), type( type )
 {
     messageString.reserve( 300 );
 }
 
-RocketChatMessage::RocketChatMessage( QJsonObject data ) : data( data )
+RocketChatMessage::RocketChatMessage( const QJsonObject &data ) : data( data )
 {
-    timestamp = Utils::getMessageTimestamp( data );
+    timestamp = static_cast<qint64>( Utils::getMessageTimestamp( data ) );
     roomId = data[QStringLiteral( "rid" )].toString();
     id = data[QStringLiteral( "_id" )].toString();
 
@@ -36,7 +36,7 @@ RocketChatMessage::RocketChatMessage( QJsonObject data ) : data( data )
 
 }
 
-RocketChatMessage::RocketChatMessage( QString roomId, QString message )
+RocketChatMessage::RocketChatMessage( const QString &roomId, const QString &message )
 {
     this->roomId = roomId;
     this->messageString = message;
@@ -190,7 +190,7 @@ QString RocketChatMessage::getServer() const
     return server;
 }
 
-void RocketChatMessage::setServer(const QString &value)
+void RocketChatMessage::setServer( const QString &value )
 {
     server = value;
 }
@@ -200,7 +200,7 @@ QString RocketChatMessage::getRoomeTyp() const
     return roomeTyp;
 }
 
-void RocketChatMessage::setRoomeTyp(const QString &value)
+void RocketChatMessage::setRoomeTyp( const QString &value )
 {
     roomeTyp = value;
 }
diff --git a/repos/entities/rocketchatmessage.h b/repos/entities/rocketchatmessage.h
index fede983c3aa1c985dfc789206fd7a081e375e320..26959eaced38481eafbc6c1acacf61af7ebad682 100755
--- a/repos/entities/rocketchatmessage.h
+++ b/repos/entities/rocketchatmessage.h
@@ -39,9 +39,9 @@ class RocketChatMessage
             textmessage,
             replymessage
         };
-        RocketChatMessage( QJsonObject data, unsigned long timestamp, RocketChatMessage::Type messageType = Type::textmessage );
-        RocketChatMessage( QJsonObject data );
-        RocketChatMessage( QString roomId, QString message );
+        RocketChatMessage( const QJsonObject &data, unsigned long timestamp, RocketChatMessage::Type messageType = Type::textmessage );
+        RocketChatMessage( const QJsonObject &data );
+        RocketChatMessage( const QString &roomId, const QString &message );
         bool operator > ( const RocketChatMessage &compMessage ) const
         {
             return ( timestamp > compMessage.getTimestamp() );
@@ -95,12 +95,12 @@ class RocketChatMessage
         void setAuthorId( const QString &value );
 
         QString getServer() const;
-        void setServer(const QString &value);
+        void setServer( const QString &value );
 
         QString getRoomeTyp() const;
-        void setRoomeTyp(const QString &value);
+        void setRoomeTyp( const QString &value );
 
-protected:
+    protected:
         bool empty = false;
         qint64 timestamp = 0;
         QJsonObject data;
diff --git a/repos/entities/rocketchatreplymessage.cpp b/repos/entities/rocketchatreplymessage.cpp
index 3378e1d441771e971f43eec82c6de741a3242ef9..225964e1722d3e69a75638d07324fd2b05aedef2 100644
--- a/repos/entities/rocketchatreplymessage.cpp
+++ b/repos/entities/rocketchatreplymessage.cpp
@@ -1,8 +1,8 @@
 #include "rocketchatreplymessage.h"
 
 
-RocketChatReplyMessage::RocketChatReplyMessage(QString pText, QString pAuthor, QString pUrl)
-    :RocketChatAttachment(pUrl,"replyMessage",pUrl),RocketChatMessage(QJsonObject(),0,RocketChatMessage::Type::replymessage)
+RocketChatReplyMessage::RocketChatReplyMessage( const QString &pText, const QString &pAuthor, const QString &pUrl )
+    : RocketChatAttachment( pUrl, QStringLiteral( "replyMessage" ), pUrl ), RocketChatMessage( QJsonObject(), 0, RocketChatMessage::Type::replymessage )
 {
     mUrl = pUrl;
     messageString = pText;
diff --git a/repos/entities/rocketchatreplymessage.h b/repos/entities/rocketchatreplymessage.h
index 4e6f02619974340c060fab2072c7f813331efd42..417ea45fa66562e70e56de0b7db703daffb5dd10 100644
--- a/repos/entities/rocketchatreplymessage.h
+++ b/repos/entities/rocketchatreplymessage.h
@@ -8,14 +8,14 @@
 
 class RocketChatReplyMessage :  public RocketChatAttachment, RocketChatMessage
 {
-    Q_OBJECT
-public:
-    RocketChatReplyMessage( QString text,QString author, QString Url = "");
-    using RocketChatMessage::getMessageString;
-    using RocketChatMessage::getAuthor;
-signals:
+        Q_OBJECT
+    public:
+        RocketChatReplyMessage( const QString &pText, const QString &pAuthor, const QString &pUrl = "" );
+        using RocketChatMessage::getMessageString;
+        using RocketChatMessage::getAuthor;
+    signals:
 
-public slots:
+    public slots:
 };
 
 #endif // ROCKETCHATREPLYMESSAGE_H
diff --git a/repos/entities/rocketchatuser.cpp b/repos/entities/rocketchatuser.cpp
index a4fc04b174de91d62e3337ae6753308ae16424fc..66a3d4a98052b775cd929368b4a5057b79711280 100755
--- a/repos/entities/rocketchatuser.cpp
+++ b/repos/entities/rocketchatuser.cpp
@@ -85,21 +85,23 @@ void RocketChatUser::setStatus( const QString &pStatus )
     if ( !pStatus.isEmpty() ) {
         status newStatus;
 
-        if ( pStatus == "online" ) {
+        if ( pStatus == QStringLiteral( "online" ) ) {
             newStatus = status::ONLINE;
-        } else if ( pStatus == "away" ) {
+        } else if ( pStatus == QStringLiteral( "away" ) ) {
             newStatus = status::AWAY;
-        } else if ( pStatus == "offline" ) {
+        } else if ( pStatus == QStringLiteral( "offline" ) ) {
             newStatus = status::OFFLINE;
-        } else if ( pStatus == "busy" ) {
+        } else if ( pStatus == QStringLiteral( "busy" ) ) {
             newStatus = status::BUSY;
+        } else {
+            newStatus = status::OFFLINE;
         }
 
         setStatus( newStatus );
     }
 }
 
-bool RocketChatUser::operator==( const RocketChatUser lhs )
+bool RocketChatUser::operator==( const RocketChatUser &lhs ) const
 {
     return lhs.getUserId() == this->getUserId();
 }
diff --git a/repos/entities/rocketchatuser.h b/repos/entities/rocketchatuser.h
index 6f6c04b6732b8dacaa32bb8dbd09f0d23dc2e5c6..df7c840cf7d726e5b50409556ffd10cdf5332e00 100755
--- a/repos/entities/rocketchatuser.h
+++ b/repos/entities/rocketchatuser.h
@@ -56,7 +56,7 @@ class RocketChatUser : public QObject
         void setStatus( const QString &pStatus );
         
 
-        inline bool operator==( const RocketChatUser lhs );
+        bool operator==( const RocketChatUser &lhs ) const;
 
         QString getName() const;
         void setName( const QString &name );
diff --git a/repos/entities/tempfile.cpp b/repos/entities/tempfile.cpp
index 39e0931b76564c95a8b86281d824d37c010db298..d43820b01f8e081f4e74d02269ad916cd5ec15bf 100644
--- a/repos/entities/tempfile.cpp
+++ b/repos/entities/tempfile.cpp
@@ -23,7 +23,7 @@
 #include "tempfile.h"
 
 
-TempFile::TempFile( QString path, QString url )
+TempFile::TempFile( const QString &path, const QString &url )
 {
     mFilePath = path;
     mUrl = url;
@@ -50,7 +50,7 @@ QString TempFile::getFilePath() const
     return mFilePath;
 }
 
-void TempFile::setFilePath( const QString filePath )
+void TempFile::setFilePath( const QString &filePath )
 {
     mFilePath = filePath;
 }
@@ -61,7 +61,7 @@ QUrl TempFile::getUrl() const
     return mUrl;
 }
 
-void TempFile::setUrl( const QUrl url )
+void TempFile::setUrl( const QUrl &url )
 {
     mUrl = url;
 }
diff --git a/repos/entities/tempfile.h b/repos/entities/tempfile.h
index 43f0cc7eed7454216c8322ca37f2087c640abae2..0dd0f603129b9b8caf393b390295fe96f20f7626 100644
--- a/repos/entities/tempfile.h
+++ b/repos/entities/tempfile.h
@@ -31,16 +31,16 @@ class TempFile
 {
     public:
 
-        TempFile( QString path, QString url );
+        TempFile( const QString &path, const QString &url );
 
         QString getFilePath() const;
-        void setFilePath( const QString filePath );
+        void setFilePath( const QString &filePath );
 
         QString getType() const;
-        void setType( const QString value );
+        void setType( const QString &value );
 
         QUrl getUrl() const;
-        void setUrl( const QUrl url );
+        void setUrl( const QUrl &url );
 
         QFileInfo getFileInfo() const;
 
diff --git a/repos/loginmethodsrepository.cpp b/repos/loginmethodsrepository.cpp
index 70aa579deb12e52622538756b71ef6b394500089..2e02e2d341aad85dbd384b78f954c8064d2de030 100644
--- a/repos/loginmethodsrepository.cpp
+++ b/repos/loginmethodsrepository.cpp
@@ -27,7 +27,7 @@ LoginMethodsRepository::LoginMethodsRepository( QObject *parent ) : QObject( par
 
 }
 
-void LoginMethodsRepository::addLoginMethod( QJsonObject pObject, QString pBaseUrl )
+void LoginMethodsRepository::addLoginMethod( const QJsonObject &pObject, const QString &pBaseUrl )
 {
     if ( pObject.contains( QStringLiteral( "service" ) ) && pObject.contains( QStringLiteral( "serverURL" ) ) && pObject.contains( QStringLiteral( "clientId" ) ) &&
             pObject.contains( QStringLiteral( "tokenPath" ) ) && pObject.contains( QStringLiteral( "identityPath" ) ) &&
@@ -53,12 +53,12 @@ void LoginMethodsRepository::addLoginMethod( QJsonObject pObject, QString pBaseU
     }
 }
 
-void LoginMethodsRepository::addLoginMethod( LoginMethod pMethod )
+void LoginMethodsRepository::addLoginMethod( const LoginMethod &pMethod )
 {
     mData.insert( pMethod.getService(), pMethod );
 }
 
-LoginMethod LoginMethodsRepository::get( QString pMethodName )
+LoginMethod LoginMethodsRepository::get( const QString &pMethodName )
 {
     return mData[pMethodName];
 }
@@ -68,7 +68,7 @@ LoginMethod LoginMethodsRepository::operator[]( const QString &pString )
     return get( pString );
 }
 
-bool LoginMethodsRepository::contains( QString pTerm )
+bool LoginMethodsRepository::contains( const QString &pTerm )
 {
     return mData.contains( pTerm );
 }
diff --git a/repos/loginmethodsrepository.h b/repos/loginmethodsrepository.h
index f5253dfcde46b797b980b0ccd122416e956d9bd0..cf47366e57d504bd222232b55a07df43c5f39de2 100644
--- a/repos/loginmethodsrepository.h
+++ b/repos/loginmethodsrepository.h
@@ -37,13 +37,13 @@ class LoginMethodsRepository : public QObject
     public:
         explicit LoginMethodsRepository( QObject *parent = nullptr );
 
-        void addLoginMethod( QJsonObject pObject, QString pBaseUrl );
-        void addLoginMethod( LoginMethod pMethod );
+        void addLoginMethod( const QJsonObject &pObject, const QString &pBaseUrl );
+        void addLoginMethod( const LoginMethod &pMethod );
 
-        LoginMethod get( QString pMethodName );
+        LoginMethod get( const QString &pMethodName );
         LoginMethod operator[]( const QString &pString );
 
-        bool contains( QString pTerm );
+        bool contains( const QString &pTerm );
 
         void clear();
 
diff --git a/repos/messagerepository.cpp b/repos/messagerepository.cpp
index 3f27137910e9da04df0cad773285e609de2e6da2..10e14d679c1b58896a6fa5277751d9a395896c38 100755
--- a/repos/messagerepository.cpp
+++ b/repos/messagerepository.cpp
@@ -38,6 +38,18 @@ ChatMessage MessageRepository::youngest()
     return obj;
 }
 
+ChatMessage MessageRepository::youngest() const
+{
+
+    ChatMessage obj;
+
+    if ( Q_LIKELY( mTimestampIndex.size() ) ) {
+        obj = mTimestampIndex.last();
+    }
+
+    return obj;
+}
+
 ChatMessage MessageRepository::oldest()
 {
     ChatMessage obj;
@@ -49,6 +61,18 @@ ChatMessage MessageRepository::oldest()
     return obj;
 }
 
+ChatMessage MessageRepository::oldest() const
+{
+    ChatMessage obj;
+
+    if ( Q_LIKELY( mTimestampIndex.size() ) ) {
+        obj = mTimestampIndex.first();
+    }
+
+    return obj;
+}
+
+
 QVector<QSharedPointer<RocketChatMessage> > MessageRepository::messagesAsObjects()
 {
     QVector<QSharedPointer<RocketChatMessage>> list;
@@ -73,7 +97,7 @@ void MessageRepository::setTimestampIndex( const QMap<qint64, QSharedPointer<Roc
     mTimestampIndex = timestampIndex;
 }
 
-bool MessageRepository::add( QString pId, QSharedPointer<RocketChatMessage> pMsg )
+bool MessageRepository::add( const QString &pId, const QSharedPointer<RocketChatMessage> &pMsg )
 {
     if ( !pMsg.isNull() ) {
         mTimestampIndex[pMsg->getTimestamp()] = pMsg;
diff --git a/repos/messagerepository.h b/repos/messagerepository.h
index 2b36871190d2e8a70562ca4d990b210c5e40b791..0712c5ea58250e3709fb6e216ff25e434b190300 100755
--- a/repos/messagerepository.h
+++ b/repos/messagerepository.h
@@ -37,9 +37,11 @@ class MessageRepository : public AbstractBaseRepository<RocketChatMessage>
     public:
         MessageRepository();
         ChatMessage youngest();
+        ChatMessage youngest() const;
         ChatMessage oldest();
+        ChatMessage oldest() const;
         QVector<QSharedPointer<RocketChatMessage> > messagesAsObjects();
-        bool add( QString pId, ChatMessage );
+        bool add( const QString &pId, const ChatMessage & );
         QMap<qint64, QSharedPointer<RocketChatMessage> > timestampIndex() const;
         void setTimestampIndex( const QMap<qint64, QSharedPointer<RocketChatMessage> > &timestampIndex );
 
diff --git a/rocketchatserver.cpp b/rocketchatserver.cpp
index d94faa59bce07c8d1a37ebd1ea536e41fed85327..ac6e4eea70a7820f34a7b7954e6f7adb9deac005 100755
--- a/rocketchatserver.cpp
+++ b/rocketchatserver.cpp
@@ -561,7 +561,7 @@ void RocketChatServerData::onUnreadCountChanged()
     emit unreadCountChanged( QStringLiteral( "default" ), number );
 }
 
-bool RocketChatServerData::handlesMessage( QJsonObject message )
+bool RocketChatServerData::handlesMessage( const QJsonObject &message )
 {
     qDebug() << "RocketChatServerData message handler";
     onDDPMessageReceived( message );
diff --git a/rocketchatserver.h b/rocketchatserver.h
index 35ac30e19936f1c687a62690fa609b9f1fccfea6..cf04c770a54a9bed38c2167c6d7ee01c72120888 100755
--- a/rocketchatserver.h
+++ b/rocketchatserver.h
@@ -352,7 +352,7 @@ class RocketChatServerData : public MessageListener
 
         // MessageListener interface
     public:
-        bool handlesMessage( QJsonObject object );
+        bool handlesMessage( const QJsonObject &object );
         QString getBaseUrl() const;
         QSharedPointer<RocketChatUser> getOwnUser() const;
         void setOwnUser( const QSharedPointer<RocketChatUser> &ownUser );
diff --git a/services/emojiservice.cpp b/services/emojiservice.cpp
index da0b89c5cfd22ee4f21f35dc2b178938aad34c6d..2a7336089b9e54b6bdcaf6d3304234bb6484946f 100755
--- a/services/emojiservice.cpp
+++ b/services/emojiservice.cpp
@@ -40,10 +40,10 @@ EmojiService::EmojiService( RocketChatServerData *server,  FileService *pFileSer
  *
  * @brief EmojiService::loadCustomEmojis
  */
-void EmojiService::loadCustomEmojis( std::function<void ( QList<QSharedPointer<Emoji>> )> pSuccess )
+void EmojiService::loadCustomEmojis( const std::function<void ( QList<QSharedPointer<Emoji>> )> &pSuccess )
 {
     QJsonArray params;
-    DdpCallback success = [ = ]( QJsonObject pResponse, MeteorDDP * pDdp ) {
+    DdpCallback success = [ = ]( const QJsonObject & pResponse, MeteorDDP * pDdp ) {
         Q_UNUSED( pDdp );
         QJsonArray result = pResponse[QStringLiteral( "result" )].toArray();
         EmojiData *data = new EmojiData( result );
@@ -73,7 +73,7 @@ QList<QSharedPointer<Emoji>> EmojiService::loadEmojisFromDb()
     return emojiList;
 }
 
-void EmojiService::persistEmoji( QSharedPointer<Emoji> pEmoji )
+void EmojiService::persistEmoji( const QSharedPointer<Emoji> &pEmoji )
 {
     storage->addCustomEmoji( pEmoji->getIdentifier(), pEmoji->getFilePath(), pEmoji->getHtml(), QStringLiteral( "custom" ), QStringLiteral( "dontcare" ) );
 }
@@ -131,7 +131,7 @@ void EmojiService::handleCustomEmojisReceived( EmojiData *data )
  * @param pEmojiData
  * @return
  */
-QSharedPointer<Emoji> EmojiService::parseEmoji( QHash<QString, QString> pEmojiData )
+QSharedPointer<Emoji> EmojiService::parseEmoji( const QHash<QString, QString> &pEmojiData )
 {
     QString name = pEmojiData[QStringLiteral( "id" )];
     QString extension = pEmojiData[QStringLiteral( "extension" )];
@@ -145,7 +145,7 @@ QSharedPointer<Emoji> EmojiService::parseEmoji( QHash<QString, QString> pEmojiDa
     return emoji;
 }
 
-QSharedPointer<Emoji> EmojiService::parseEmoji( QJsonObject pEmojiData )
+QSharedPointer<Emoji> EmojiService::parseEmoji( const QJsonObject &pEmojiData )
 {
     QString name = pEmojiData[QStringLiteral( "name" )].toString();
     QString extension = pEmojiData[QStringLiteral( "extension" )].toString();
@@ -160,7 +160,7 @@ QSharedPointer<Emoji> EmojiService::parseEmoji( QJsonObject pEmojiData )
  * @brief EmojiData::EmojiData
  * @param data
  */
-EmojiData::EmojiData( QJsonArray data )
+EmojiData::EmojiData( const QJsonArray &data )
 {
     this->emojiData = data;
     this->emojiCounter = data.count();
diff --git a/services/emojiservice.h b/services/emojiservice.h
index 4ff156b074f71d5b2ca04fcb24e3f27392202697..14cbbf8a0d475fe8126a2367e50778fd8442649e 100644
--- a/services/emojiservice.h
+++ b/services/emojiservice.h
@@ -37,7 +37,7 @@ class FileService;
 class EmojiData
 {
     public:
-        EmojiData( QJsonArray data );
+        EmojiData( const QJsonArray &data );
         QJsonArray getEmojiData() const;
         QAtomicInt emojiCounter = 0;
         QAtomicInt emojisProcessed = 0;
@@ -50,20 +50,20 @@ class EmojiService
 {
     public:
         EmojiService( RocketChatServerData *server, FileService *pFileService, PersistanceLayer *storage );
-        void loadCustomEmojis( std::function<void ( QList<QSharedPointer<Emoji>> )> success );
+        void loadCustomEmojis( const std::function<void ( QList<QSharedPointer<Emoji>> )> &success );
         QList<QSharedPointer<Emoji>> loadEmojisFromDb( void );
-        void persistEmoji( QSharedPointer<Emoji> pEmoji );
+        void persistEmoji( const QSharedPointer<Emoji> &pEmoji );
     protected:
         RocketChatServerData *server;
         void handleCustomEmojisReceived( EmojiData *data );
-        QSharedPointer<Emoji> parseEmoji( QHash<QString, QString> pEmojiData );
-        QSharedPointer<Emoji> parseEmoji( QJsonObject pEmojiData );
+        QSharedPointer<Emoji> parseEmoji( const QHash<QString, QString> &pEmojiData );
+        QSharedPointer<Emoji> parseEmoji( const QJsonObject &pEmojiData );
         PersistanceLayer *storage;
         FileService *mFileService;
         QList<QSharedPointer<Emoji>> mParsedCustomEmojisTemp;
 
     signals:
-        void emojisReceived( QList<QSharedPointer<Emoji>> pEmojiList );
+        void emojisReceived( const QList<QSharedPointer<Emoji>> &pEmojiList );
 };
 
 #endif // EMOJISERVICE_H
diff --git a/services/fileservice.cpp b/services/fileservice.cpp
index 06f9defe974e54ece2cc626f8bb49c6fea0c6ed7..661dcf0280de524e03b42cde1eb3b769d95f4c03 100755
--- a/services/fileservice.cpp
+++ b/services/fileservice.cpp
@@ -66,7 +66,7 @@ FileService::FileService( RocketChatServerData *server )
  * @param pThen function that is execeuted when thre is some result
  * @return bool true if the file is already downloaded, then is not executed in this case
  */
-bool FileService::getFileRessource( QSharedPointer< FileRequest > pRequest )
+bool FileService::getFileRessource( const QSharedPointer< FileRequest > &pRequest )
 {
 
     if ( !pRequest.isNull() && pRequest->url.size() > 0 ) {
@@ -86,7 +86,7 @@ bool FileService::getFileRessource( QSharedPointer< FileRequest > pRequest )
     return false;
 }
 
-QSharedPointer<TempFile> FileService::getFileFromCache( QSharedPointer< FileRequest > pRequest )
+QSharedPointer<TempFile> FileService::getFileFromCache( const QSharedPointer< FileRequest > &pRequest )
 {
     if ( !pRequest.isNull() ) {
         QString baseUrl = mServer->getRestApi()->getBaseUrl();
@@ -113,7 +113,7 @@ QSharedPointer<TempFile> FileService::getFileFromCache( QSharedPointer< FileRequ
     }
 }
 
-void FileService::getFileFromServer( QSharedPointer< FileRequest > pRequest )
+void FileService::getFileFromServer( const QSharedPointer< FileRequest > &pRequest )
 {
     if ( Q_LIKELY( !pRequest.isNull() ) ) {
         QMutexLocker( &this->mDownloadMutex );
@@ -121,7 +121,7 @@ void FileService::getFileFromServer( QSharedPointer< FileRequest > pRequest )
         QString fullUrl = baseUrl + pRequest->url ;
 
         if ( !mCurrentDownloads.contains( fullUrl ) ) {
-            RestRequestCallback success = [ = ]( QNetworkReply * pReply, QJsonObject pData, RestApi * api ) {
+            RestRequestCallback success = [ = ]( QNetworkReply * pReply, const QJsonObject & pData, RestApi * api ) {
                 Q_UNUSED( pData );
                 Q_UNUSED( api );
 
@@ -171,7 +171,7 @@ void FileService::getFileFromServer( QSharedPointer< FileRequest > pRequest )
                         }
 
                         if ( file.open( QIODevice::ReadWrite ) ) {
-                            int written = file.write( content );
+                            auto written = file.write( content );
                             qDebug() << "wrote byte to file" << written;
                             file.close();
                             QSharedPointer<TempFile> tempfile( new TempFile( location, url ) );
@@ -189,7 +189,7 @@ void FileService::getFileFromServer( QSharedPointer< FileRequest > pRequest )
                     }
                 }
             };
-            RestRequestCallback error = [ = ]( QNetworkReply * reply, QJsonObject pData, RestApi * api ) {
+            RestRequestCallback error = [ = ]( QNetworkReply * reply, const QJsonObject & pData, RestApi * api ) {
                 Q_UNUSED( reply );
                 Q_UNUSED( pData );
                 Q_UNUSED( api );
@@ -223,7 +223,7 @@ QString FileService::getFileHash( QFile *pFile )
     return hashString;
 }
 
-QString FileService::determineLocation( QUrl pUrl, QMimeType pType )
+QString FileService::determineLocation( const QUrl &pUrl, const QMimeType &pType )
 {
     QString mimeTypeName = pType.name();
     QString urlString = pUrl.toString();
@@ -266,7 +266,7 @@ QString FileService::determineLocation( QUrl pUrl, QMimeType pType )
     return filePath;
 }
 
-FileRequest::FileRequest( QString url, QString type,  std::function<void ( QSharedPointer<TempFile>, bool )> then, bool showInline )
+FileRequest::FileRequest( const QString &url, const QString &type, const std::function<void ( QSharedPointer<TempFile>, bool )> &then, bool showInline )
 {
     this->type = type;
     this->url = url;
diff --git a/services/fileservice.h b/services/fileservice.h
index 1e8f66c5faef3b230638af47c888bff8f5446165..7590c047119dfb5eb6607d0042b1794b8ee27bd4 100644
--- a/services/fileservice.h
+++ b/services/fileservice.h
@@ -33,7 +33,7 @@ class RocketChatServerData;
 class FileRequest
 {
     public:
-        FileRequest( QString url, QString type, std::function<void ( QSharedPointer<TempFile>, bool )> then, bool showInline );
+        FileRequest( const QString &url, const QString &type, const std::function<void ( QSharedPointer<TempFile>, bool )> &then, bool showInline );
         QString type = "";
         QString url = "";
         std::function<void ( QSharedPointer<TempFile>, bool )> then;
@@ -44,17 +44,17 @@ class FileService
 {
     public:
         FileService( RocketChatServerData *server );
-        bool getFileRessource( QSharedPointer< FileRequest > pRequest );
+        bool getFileRessource( const QSharedPointer< FileRequest > &pRequest );
     protected:
         QMutex mDownloadMutex;
-        QSharedPointer<TempFile> getFileFromCache( QSharedPointer< FileRequest > pRequest );
-        void getFileFromServer( QSharedPointer< FileRequest > pRequest );
+        QSharedPointer<TempFile> getFileFromCache( const QSharedPointer< FileRequest > &pRequest );
+        void getFileFromServer( const QSharedPointer< FileRequest > &pRequest );
         QString getFileHash( QFile *file );
         QSet<QString> mCurrentDownloads;
         RocketChatServerData *mServer;
         PersistanceLayer *mStorage;
         QMimeDatabase mMimeDb;
-        QString determineLocation( QUrl url, QMimeType type );
+        QString determineLocation( const QUrl &url, const QMimeType &type );
         QString mImagepath;
         QString mVideoPath;
         QString mDocumentPath;
diff --git a/services/messageservice.cpp b/services/messageservice.cpp
index ceed9c751f5362bdf872b709484e3f2b12caa1ad..b30d378268b93d7f286a5981e0372eadd55fc9fe 100644
--- a/services/messageservice.cpp
+++ b/services/messageservice.cpp
@@ -36,55 +36,55 @@
 
 MessageService::MessageService( PersistanceLayer *pPersistanceLayer,
                                 RocketChatServerData *pServer,
-                                EmojiRepo *pEmojiRepo): mReplyRegeEx("\\[ \\]\\(.*\\)</a>"),mEmojiRepo( pEmojiRepo ), mMessagesModel( Models::getMessagesModel() ),
-                                mSearchResults(Models::getMessagesSearchModel()),mReplyReplyRegeEx("\\[ \\]\\(.*\\)")
+                                EmojiRepo *pEmojiRepo ): mReplyRegeEx( "\\[ \\]\\(.*\\)</a>" ), mEmojiRepo( pEmojiRepo ), mMessagesModel( Models::getMessagesModel() ),
+    mSearchResults( Models::getMessagesSearchModel() ), mReplyReplyRegeEx( "\\[ \\]\\(.*\\)" )
 {
     this->mPersistanceLayer = pPersistanceLayer;
     this->mServer = pServer;
     qRegisterMetaType<MessageList>( "MessageList" );
 }
 
-void MessageService::loadHistory( QSharedPointer<LoadHistoryServiceRequest> pRequest )
+void MessageService::loadHistory( const QSharedPointer<LoadHistoryServiceRequest> &pRequest )
 {
     if ( !pRequest.isNull() ) {
         switch ( pRequest->getSource() ) {
-        case LoadHistoryServiceRequest::Source::DataBase:
-            loadHistoryFromDb( pRequest );
-            break;
+            case LoadHistoryServiceRequest::Source::DataBase:
+                loadHistoryFromDb( pRequest );
+                break;
 
-        case LoadHistoryServiceRequest::Source::SERVER:
-            loadHistoryFromServer( pRequest );
-            break;
+            case LoadHistoryServiceRequest::Source::SERVER:
+                loadHistoryFromServer( pRequest );
+                break;
 
-        default:
-            loadHistoryFromAutoSource( pRequest );
-            break;
+            default:
+                loadHistoryFromAutoSource( pRequest );
+                break;
         }
     }
 }
 
 
 
-void MessageService::checkForMissingMessages( QSharedPointer<LoadMissedMessageServiceRequest>
-                                              pRequest )
+void MessageService::checkForMissingMessages( const QSharedPointer<LoadMissedMessageServiceRequest>
+        &pRequest )
 {
     Q_UNUSED( pRequest )
 
 }
 
-void MessageService::sendMessage( QSharedPointer<RocketChatMessage> pMessage )
+void MessageService::sendMessage( const QSharedPointer<RocketChatMessage> &pMessage )
 {
     if ( !pMessage.isNull() ) {
         QJsonObject params;
         params[QStringLiteral( "rid" )] = pMessage->getRoomId();
         params[QStringLiteral( "msg" )] = pMessage->getMessageString();
         QSharedPointer<DDPRequest> sendMessageRequest( new DDPMethodRequest(
-                                                           QStringLiteral( "sendMessage" ), {params} ) );
+                    QStringLiteral( "sendMessage" ), {params} ) );
         mServer->sendDdprequest( sendMessageRequest, true );
     }
 }
 
-void MessageService::persistMessage( QSharedPointer<RocketChatMessage> pMessage )
+void MessageService::persistMessage( const QSharedPointer<RocketChatMessage> &pMessage )
 {
     if ( !pMessage.isNull() ) {
         QJsonDocument doc( pMessage->getData() );
@@ -94,7 +94,7 @@ void MessageService::persistMessage( QSharedPointer<RocketChatMessage> pMessage
     }
 }
 
-void MessageService::persistMessages( MessageList pMessage )
+void MessageService::persistMessages( const MessageList &pMessage )
 {
     mPersistanceLayer->transaction();
 
@@ -108,7 +108,7 @@ void MessageService::persistMessages( MessageList pMessage )
 }
 
 QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObject &pMessageData,
-                                                                bool linkify )
+        bool linkify )
 {
     ChatMessage message( nullptr );
     QString userId = mServer->getUserId();
@@ -143,7 +143,8 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
         if ( Q_LIKELY( pMessageData.contains( "t" ) ) ) {
             msgType = pMessageData["t"].toString();
         }
-        if (Q_UNLIKELY(mServer->getUsername() == "apple.store") && msgType == "jitsi_call_started") {
+
+        if ( Q_UNLIKELY( mServer->getUsername() == "apple.store" ) && msgType == "jitsi_call_started" ) {
             return nullptr;
         }
 
@@ -167,6 +168,7 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
         if ( authorId == userId ) {
             ownMessage = true;
         }
+
         QJsonObject timestampObject = pMessageData[QStringLiteral( "ts" )].toObject();
         qint64 timestamp = 0;
 
@@ -187,12 +189,12 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
         if ( attachments.size() > 0 ) {
             QSharedPointer<RocketChatAttachment> firstAttachment  = attachments.first();
 
-            if ( !firstAttachment.isNull()  ) {
-                if(firstAttachment->getType() == "replyMessage"){
+            if ( !firstAttachment.isNull() ) {
+                if ( firstAttachment->getType() == "replyMessage" ) {
                     QString messageText = msgString;
-                    messageText.replace(mReplyRegeEx,"");
+                    messageText.replace( mReplyRegeEx, "" );
                     msgString  = messageText;
-                }else{
+                } else {
                     msgString = firstAttachment->getTitle();
                 }
             }
@@ -212,7 +214,9 @@ QSharedPointer<RocketChatMessage> MessageService::parseMessage( const QJsonObjec
     if ( Q_UNLIKELY( message.isNull() ) ) {
         qDebug() << "invalid messag";
     }
-    message->setServer(mServer->getBaseUrl());
+
+    message->setServer( mServer->getBaseUrl() );
+
     if ( !blocked ) {
         return message;
     } else {
@@ -235,35 +239,39 @@ void MessageService::addChannelToBlockList( const QString &pId )
     addUserToBlockList( otherUserId );
 }
 
-void MessageService::searchMessage(const QString &pTerm, const QString &pRoom)
+void MessageService::searchMessage( const QString &pTerm, const QString &pRoom )
 {
-    DdpCallback ddpSuccess = [ = ]( QJsonObject pResponse,
+    DdpCallback ddpSuccess = [ = ]( const QJsonObject & pResponse,
     MeteorDDP * pDdp ) {
-        Q_UNUSED(pDdp)
-        if(pResponse.contains("result")){
+        Q_UNUSED( pDdp )
+
+        if ( pResponse.contains( "result" ) ) {
             QJsonObject result = pResponse["result"].toObject();
-            if(result.contains("messages")){
+
+            if ( result.contains( "messages" ) ) {
                 QJsonArray messagesArray = result["messages"].toArray();
                 MessageList messageList;
-                for(auto message : messagesArray){
-                    messageList.append(parseMessage(message.toObject()));
+
+                for ( auto message : messagesArray ) {
+                    messageList.append( parseMessage( message.toObject() ) );
                 }
-                if(messageList.size()){
-                    QMetaObject::invokeMethod(mSearchResults, "setSearchResults", Q_ARG(MessageList, messageList));
+
+                if ( messageList.size() ) {
+                    QMetaObject::invokeMethod( mSearchResults, "setSearchResults", Q_ARG( MessageList, messageList ) );
                 }
             }
         }
     };
 
     QSharedPointer<RocketChatMessageSearchRequest> request( new RocketChatMessageSearchRequest( pTerm,
-                                                                    pRoom ) );
+            pRoom ) );
 
-    request->setSuccess(ddpSuccess);
+    request->setSuccess( ddpSuccess );
 
     mServer->sendDdprequest( request );
 }
 
-void MessageService::loadHistoryFromServer( QSharedPointer<LoadHistoryRequestContainer> pContainer )
+void MessageService::loadHistoryFromServer( const QSharedPointer<LoadHistoryRequestContainer> &pContainer )
 {
     if ( !pContainer.isNull() ) {
         auto requests = pContainer->getRequests();
@@ -299,8 +307,8 @@ void MessageService::loadHistoryFromServer( QSharedPointer<LoadHistoryRequestCon
                     }
 
                     QSharedPointer<DDPMethodRequest> request( new DDPMethodRequest( QStringLiteral( "loadHistory" ),
-                                                                                    params ) );
-                    DdpCallback ddpSuccess = [ = ]( QJsonObject pResponse,
+                            params ) );
+                    DdpCallback ddpSuccess = [ = ]( const QJsonObject & pResponse,
                     MeteorDDP * pDdp ) {
                         Q_UNUSED( pDdp );
 
@@ -350,20 +358,20 @@ void MessageService::loadHistoryFromServer( QSharedPointer<LoadHistoryRequestCon
     }
 }
 
-void MessageService::loadHistoryFromServer( QSharedPointer<LoadHistoryServiceRequest> pRequest )
+void MessageService::loadHistoryFromServer( const QSharedPointer<LoadHistoryServiceRequest> &pRequest )
 {
     if ( !pRequest.isNull() ) {
         QList<QSharedPointer<LoadHistoryServiceRequest>> list;
         list.append( pRequest );
         QSharedPointer<LoadHistoryRequestContainer> container( new LoadHistoryRequestContainer( list,
-                                                                                                pRequest->getSuccess() ) );
+                pRequest->getSuccess() ) );
         container->setSuccess( pRequest->getSuccess() );
         loadHistoryFromServer( container );
     }
 }
 
 QMultiMap<QString, ChatMessage> *MessageService::loadHistoryFromDb(
-    QSharedPointer<LoadHistoryServiceRequest> pRequest )
+    const QSharedPointer<LoadHistoryServiceRequest> &pRequest )
 {
     QMultiMap<QString, ChatMessage> *channelMap  = new QMultiMap<QString, ChatMessage>;
 
@@ -376,7 +384,7 @@ QMultiMap<QString, ChatMessage> *MessageService::loadHistoryFromDb(
 
         for ( const auto &channelId : channelIds ) {
             QList<QJsonObject> result = mPersistanceLayer->getMessagesByRid( channelId,
-                                                                             static_cast<qint64>( start ), static_cast< int >( limit ) );
+                                        static_cast<qint64>( start ), static_cast< int >( limit ) );
             messages.append( result );
         }
 
@@ -392,7 +400,7 @@ QMultiMap<QString, ChatMessage> *MessageService::loadHistoryFromDb(
     return channelMap;
 }
 
-void MessageService::loadHistoryFromAutoSource( QSharedPointer<LoadHistoryServiceRequest> pRequest )
+void MessageService::loadHistoryFromAutoSource( const QSharedPointer<LoadHistoryServiceRequest> &pRequest )
 {
     int limit = pRequest->getLimit();
     auto channelMap = loadHistoryFromDb( pRequest );
@@ -463,12 +471,12 @@ void MessageService::loadHistoryFromAutoSource( QSharedPointer<LoadHistoryServic
     success( channelMap );
     qDebug() << "loaded from database now loading from sever with " << requestList.size() << "requests";
     QSharedPointer<LoadHistoryRequestContainer> requests( new LoadHistoryRequestContainer( requestList,
-                                                                                           serverSuccess ) );
+            serverSuccess ) );
     loadHistoryFromServer( requests );
 }
 
 QList<QSharedPointer<RocketChatAttachment>> MessageService::processAttachments(
-                                             QJsonObject pMessageObj )
+            const QJsonObject &pMessageObj )
 {
 
     QList<QSharedPointer<RocketChatAttachment> > attachmentsList;
@@ -516,7 +524,7 @@ QList<QSharedPointer<RocketChatAttachment>> MessageService::processAttachments(
                 }
 
                 QSharedPointer<RocketChatAttachment> attachmentObject( new RocketChatAttachment( url, type,
-                                                                                                 title ) );
+                        title ) );
                 attachmentObject->setHeight( height );
                 attachmentObject->setWidth( width );
 
@@ -524,21 +532,26 @@ QList<QSharedPointer<RocketChatAttachment>> MessageService::processAttachments(
             }
         }
     }
-    if(pMessageObj.contains("urls")){
+
+    if ( pMessageObj.contains( "urls" ) ) {
         QJsonArray attachments = pMessageObj[QStringLiteral( "attachments" )].toArray();
-        for(QJsonValueRef attachment : attachments){
+
+        for ( QJsonValueRef attachment : attachments ) {
             QJsonObject attachmentObject  = attachment.toObject();
-            if(attachmentObject.contains("text")){
+
+            if ( attachmentObject.contains( "text" ) ) {
                 QString text = attachmentObject["text"].toString();
                 QString url = "";
-                if(attachmentObject.contains("message_link")){
+
+                if ( attachmentObject.contains( "message_link" ) ) {
                     url = attachmentObject["message_link"].toString();
                 }
+
                 QString author = attachmentObject["author_name"].toString();
-                text = text.replace(mReplyRegeEx,"");
-                text = text.replace(mReplyReplyRegeEx,"");
-                QSharedPointer<RocketChatReplyMessage> reply(new RocketChatReplyMessage(text,author));
-                attachmentsList.append(reply);
+                text = text.replace( mReplyRegeEx, "" );
+                text = text.replace( mReplyReplyRegeEx, "" );
+                QSharedPointer<RocketChatReplyMessage> reply( new RocketChatReplyMessage( text, author ) );
+                attachmentsList.append( reply );
             }
         }
     }
diff --git a/services/messageservice.h b/services/messageservice.h
index f5064fd25dae2ae45a8010067098a19752e6f5f1..61d1dd9b140d82b211dd2e8a39f250d1fae9171b 100644
--- a/services/messageservice.h
+++ b/services/messageservice.h
@@ -50,17 +50,17 @@ class MessageService : public QObject
 {
         Q_OBJECT
     public:
-        // MessageService(PersistanceLayer *pPersistanceLayer, RocketChatServerData* pServer,QHash<QString, QString> &pEmojisMap);
+        // MessageService(PersistanceLayer *pPersistanceLayer, RocketChatServerData* pServer, const QHash<QString, QString> &pEmojisMap);
         MessageService( PersistanceLayer *pPersistanceLayer, RocketChatServerData *pServer, EmojiRepo *mEmojiRepo );
-        void loadHistory( QSharedPointer<LoadHistoryServiceRequest> );
-        void checkForMissingMessages( QSharedPointer<LoadMissedMessageServiceRequest> pRequest );
-        void sendMessage( QSharedPointer<RocketChatMessage> pMessage );
-        void persistMessage( QSharedPointer<RocketChatMessage> pMessage );
-        void persistMessages( MessageList pMessage );
+        void loadHistory( const QSharedPointer<LoadHistoryServiceRequest> & );
+        void checkForMissingMessages( const QSharedPointer<LoadMissedMessageServiceRequest> &pRequest );
+        void sendMessage( const QSharedPointer<RocketChatMessage> &pMessage );
+        void persistMessage( const QSharedPointer<RocketChatMessage> &pMessage );
+        void persistMessages( const MessageList &pMessage );
         QSharedPointer<RocketChatMessage> parseMessage( const QJsonObject &pMessage, bool linkify = true );
         void addUserToBlockList( const QString &pId );
         void addChannelToBlockList( const QString &pId );
-        void searchMessage(const QString &pTerm, const QString &pRoom);
+        void searchMessage( const QString &pTerm, const QString &pRoom );
     protected:
         QRegularExpression mReplyRegeEx;
         QRegularExpression mReplyReplyRegeEx;
@@ -70,11 +70,11 @@ class MessageService : public QObject
         MessagesModel *mMessagesModel;
         MessageSearchResultsModel *mSearchResults;
 
-        void loadHistoryFromServer( QSharedPointer<LoadHistoryRequestContainer> pContainer );
-        void loadHistoryFromServer( QSharedPointer<LoadHistoryServiceRequest> pContainer );
-        QMultiMap<QString, ChatMessage> *loadHistoryFromDb( QSharedPointer<LoadHistoryServiceRequest> pRequest );
-        void loadHistoryFromAutoSource( QSharedPointer<LoadHistoryServiceRequest> pRequest );
-        QList<QSharedPointer<RocketChatAttachment>> processAttachments( QJsonObject pMessageData );
+        void loadHistoryFromServer( const QSharedPointer<LoadHistoryRequestContainer> &pContainer );
+        void loadHistoryFromServer( const QSharedPointer<LoadHistoryServiceRequest> &pContainer );
+        QMultiMap<QString, ChatMessage> *loadHistoryFromDb( const QSharedPointer<LoadHistoryServiceRequest> &pRequest );
+        void loadHistoryFromAutoSource( const QSharedPointer<LoadHistoryServiceRequest> &pRequest );
+        QList<QSharedPointer<RocketChatAttachment>> processAttachments( const QJsonObject &pMessageData );
         EmojiRepo *mEmojiRepo;
         QSet<QString> mBlockedUsers;
 };
diff --git a/services/requests/loadHistoryrequestcontainer.cpp b/services/requests/loadHistoryrequestcontainer.cpp
index 220f41d40bbf80bf1e7a0f025b0e69a1e9b23db0..2e7c80bf7e3b33d0f998218d96798d1b6e2b4dff 100644
--- a/services/requests/loadHistoryrequestcontainer.cpp
+++ b/services/requests/loadHistoryrequestcontainer.cpp
@@ -22,8 +22,8 @@
 
 #include "loadHistoryrequestcontainer.h"
 
-LoadHistoryRequestContainer::LoadHistoryRequestContainer( QList<QSharedPointer<LoadHistoryServiceRequest>> pRequests,
-        std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage>>* )> pSuccess )
+LoadHistoryRequestContainer::LoadHistoryRequestContainer( const QList<QSharedPointer<LoadHistoryServiceRequest>> &pRequests,
+        const std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage>>* )> &pSuccess )
 {
     this->mRequests = pRequests;
     this->mSuccess = pSuccess;
diff --git a/services/requests/loadHistoryrequestcontainer.h b/services/requests/loadHistoryrequestcontainer.h
index df8b9287e5a3a22fd083679ab88486bf848b5911..aa9b371625d02eb78139b23421311553b3cd4b1a 100644
--- a/services/requests/loadHistoryrequestcontainer.h
+++ b/services/requests/loadHistoryrequestcontainer.h
@@ -30,8 +30,8 @@ class LoadHistoryRequestContainer
 {
         friend class MessageService;
     public:
-        LoadHistoryRequestContainer( QList<QSharedPointer<LoadHistoryServiceRequest>>,
-                                     std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage>>* )> );
+        LoadHistoryRequestContainer( const QList<QSharedPointer<LoadHistoryServiceRequest>> &, const
+                                     std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage>>* )> & );
 
         QList<QSharedPointer<LoadHistoryServiceRequest> > getRequests() const;
 
diff --git a/services/requests/loadhistoryservicerequest.cpp b/services/requests/loadhistoryservicerequest.cpp
index c8d5ca884e711b88c4abccea2032bfec5a1a1c92..f19d18fcc458e959e83fff4eb3c935a43ad1e0a1 100644
--- a/services/requests/loadhistoryservicerequest.cpp
+++ b/services/requests/loadhistoryservicerequest.cpp
@@ -22,22 +22,22 @@
 
 #include "loadhistoryservicerequest.h"
 
-LoadHistoryServiceRequest::LoadHistoryServiceRequest( QString pChannelId ): LoadHistoryServiceRequest( QStringList( pChannelId ) )
+LoadHistoryServiceRequest::LoadHistoryServiceRequest( const QString &pChannelId ): LoadHistoryServiceRequest( QStringList( pChannelId ) )
 {
 
 }
 
-LoadHistoryServiceRequest::LoadHistoryServiceRequest( QStringList pChannelIds ): mChannelIds( pChannelIds )
+LoadHistoryServiceRequest::LoadHistoryServiceRequest( const QStringList &pChannelIds ): mChannelIds( pChannelIds )
 {
 
 }
 
-LoadHistoryServiceRequest::LoadHistoryServiceRequest( QString pChannelId, int pLimit ): LoadHistoryServiceRequest( pChannelId )
+LoadHistoryServiceRequest::LoadHistoryServiceRequest( const QString &pChannelId, int pLimit ): LoadHistoryServiceRequest( pChannelId )
 {
     mLimit = pLimit;
 }
 
-LoadHistoryServiceRequest::LoadHistoryServiceRequest( QStringList pChannelIds, int pLimit ): LoadHistoryServiceRequest( pChannelIds )
+LoadHistoryServiceRequest::LoadHistoryServiceRequest( const QStringList &pChannelIds, int pLimit ): LoadHistoryServiceRequest( pChannelIds )
 {
     mLimit = pLimit;
 }
diff --git a/services/requests/loadhistoryservicerequest.h b/services/requests/loadhistoryservicerequest.h
index 7b327ae9ab8bcc5ae52da8860e57ab6fdc66e746..b64ba989e82d427d11e57e92e299f50b3ecac19e 100644
--- a/services/requests/loadhistoryservicerequest.h
+++ b/services/requests/loadhistoryservicerequest.h
@@ -31,10 +31,10 @@ enum class Source;
 class LoadHistoryServiceRequest
 {
     public:
-        LoadHistoryServiceRequest( QString pChannelId );
-        LoadHistoryServiceRequest( QStringList pChannelIds );
-        LoadHistoryServiceRequest( QString pChannelId, int pLimit );
-        LoadHistoryServiceRequest( QStringList pChannelIds, int pLimit );
+        LoadHistoryServiceRequest( const QString &pChannelId );
+        LoadHistoryServiceRequest( const QStringList &pChannelIds );
+        LoadHistoryServiceRequest( const QString &pChannelId, int pLimit );
+        LoadHistoryServiceRequest( const QStringList &pChannelIds, int pLimit );
 
         enum class Source {
             AUTO,
diff --git a/services/requests/loadmissedmessageservicerequest.cpp b/services/requests/loadmissedmessageservicerequest.cpp
index 35b55e3a06600156215177c489811ccd15d5fee0..a19d047bd318da0e37c5ec2736a0b7dd7e4bf1ec 100644
--- a/services/requests/loadmissedmessageservicerequest.cpp
+++ b/services/requests/loadmissedmessageservicerequest.cpp
@@ -22,7 +22,7 @@
 
 #include "loadmissedmessageservicerequest.h"
 
-LoadMissedMessageServiceRequest::LoadMissedMessageServiceRequest( QString pChannelId, MessageList pMessages )
+LoadMissedMessageServiceRequest::LoadMissedMessageServiceRequest( const QString &pChannelId, const MessageList &pMessages )
 {
     this->mChannelId = pChannelId;
     this->mMessages = pMessages;
diff --git a/services/requests/loadmissedmessageservicerequest.h b/services/requests/loadmissedmessageservicerequest.h
index e15b65bc666966ea47b7a66f17fd91afcb45651a..0bbaa875bdbb699321178082ffd6ec4bc7e16178 100644
--- a/services/requests/loadmissedmessageservicerequest.h
+++ b/services/requests/loadmissedmessageservicerequest.h
@@ -33,7 +33,7 @@ typedef QSharedPointer<RocketChatMessage> ChatMessage;
 class LoadMissedMessageServiceRequest
 {
     public:
-        LoadMissedMessageServiceRequest( QString pChannelId, MessageList pMessages );
+        LoadMissedMessageServiceRequest( const QString &pChannelId, const MessageList &pMessages );
 
         std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage> > *pMessages )> getSuccess() const;
         void setSuccess( const std::function<void ( QMultiMap<QString, QSharedPointer<RocketChatMessage> > *pMessages )> &pValue );
diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp
index b908cfc3eb30248ab4392b7786665a7b7c0eb9b9..e57afc42586c36ee1eb7f5da69a30a2168acc663 100755
--- a/services/rocketchatchannelservice.cpp
+++ b/services/rocketchatchannelservice.cpp
@@ -36,7 +36,7 @@ RocketChatChannelService::RocketChatChannelService( RocketChatServerData *pServe
 
 }
 
-QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( QString pRoomId, QString pName, QString pType )
+QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( const QString &pRoomId, const QString &pName, const QString &pType )
 {
     QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, pRoomId, pName, pType ) );
 
@@ -51,7 +51,7 @@ QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject(
     return ptr;
 }
 
-QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( QString pRoomId, QString pName, QString pType, QString pUsername )
+QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject( const QString &pRoomId, const QString &pName, const QString &pType, const QString &pUsername )
 {
     QSharedPointer<RocketChatChannel> ptr( new RocketChatChannel( mServer, mMessageService, pRoomId, pName, pType ) );
     ptr->setUsername( pUsername );
@@ -68,7 +68,7 @@ QSharedPointer<RocketChatChannel> RocketChatChannelService::createChannelObject(
 }
 
 
-QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processChannelData( QJsonArray pChannelArray, bool pJoined, bool pUpdateOnly )
+QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processChannelData( const QJsonArray &pChannelArray, bool pJoined, bool pUpdateOnly )
 {
     QVector<QSharedPointer<RocketChatChannel> > vec;
 
@@ -76,7 +76,7 @@ QVector<QSharedPointer<RocketChatChannel> > RocketChatChannelService::processCha
     QString openChannel = std::get<0>( openChannelTupel );
     mStorage->transaction();
 
-    for ( const auto currentChannel : pChannelArray ) {
+    for ( const auto &currentChannel : pChannelArray ) {
         QJsonObject currentChannelObject = currentChannel.toObject();
 
         if ( Q_LIKELY( ( currentChannelObject.contains( "rid" ) &&
@@ -297,7 +297,7 @@ void RocketChatChannelService::loadJoinedChannelsFromDb()
     }
 }
 
-void RocketChatChannelService::persistChannel( QSharedPointer<RocketChatChannel> pChannel )
+void RocketChatChannelService::persistChannel( const QSharedPointer<RocketChatChannel> &pChannel )
 {
     auto id = pChannel->getRoomId();
     auto name  = pChannel->getName();
@@ -317,7 +317,7 @@ void RocketChatChannelService::persistChannel( QSharedPointer<RocketChatChannel>
  * @brief RocketChatChannelService::loadUsersOfChannel
  * @param channel
  */
-void RocketChatChannelService::loadUsersOfChannel( QSharedPointer<RocketChatChannel> pChannel )
+void RocketChatChannelService::loadUsersOfChannel( const QSharedPointer<RocketChatChannel> &pChannel )
 {
     if ( !pChannel.isNull() ) {
         QString channelId = pChannel->getRoomId();
@@ -403,7 +403,7 @@ void RocketChatChannelService::loadUsersOfChannel( QSharedPointer<RocketChatChan
     }
 }
 
-void RocketChatChannelService::subscribeChannel( QSharedPointer<RocketChatChannel> pChannel )
+void RocketChatChannelService::subscribeChannel( const QSharedPointer<RocketChatChannel> &pChannel )
 {
     if ( !pChannel.isNull() ) {
         QString roomId = pChannel->getRoomId();
@@ -419,7 +419,7 @@ void RocketChatChannelService::subscribeChannel( const QString &pChannel )
 
 
 
-void RocketChatChannelService::fillChannelWithMessages( QSharedPointer<RocketChatChannel> pChannel )
+void RocketChatChannelService::fillChannelWithMessages( const QSharedPointer<RocketChatChannel> &pChannel )
 {
     if ( !pChannel.isNull() ) {
         QString roomId = pChannel->getRoomId();
@@ -621,7 +621,7 @@ channelVector RocketChatChannelService::searchRoomLocal( const QString &pTerm, c
 }
 
 //TODO: fix
-void RocketChatChannelService::openPrivateChannelWith( QString pUsername )
+void RocketChatChannelService::openPrivateChannelWith( const QString &pUsername )
 {
     QJsonArray params = {pUsername};
     QSharedPointer<DDPMethodRequest> request( new DDPMethodRequest( QStringLiteral( "createDirectMessage" ), params ) );
diff --git a/services/rocketchatchannelservice.h b/services/rocketchatchannelservice.h
index e24d25e0fbe190b80dc93975cccd81234048a3ec..6ead949baf4bc991cab2247e3f632d4838af2880 100755
--- a/services/rocketchatchannelservice.h
+++ b/services/rocketchatchannelservice.h
@@ -63,19 +63,19 @@ class RocketChatChannelService : public QObject
         MeteorDDP *getDdp() const;
         void setDdp( MeteorDDP *ddp );
 
-        QSharedPointer<RocketChatChannel> createChannelObject( QString pRoomId, QString pName, QString pType );
-        QSharedPointer<RocketChatChannel> createChannelObject( QString pRoomId, QString pName, QString pType, QString username );
+        QSharedPointer<RocketChatChannel> createChannelObject( const QString &pRoomId, const QString &pName, const QString &pType );
+        QSharedPointer<RocketChatChannel> createChannelObject( const QString &pRoomId, const QString &pName, const QString &pType, const QString &username );
 
-        void openPrivateChannelWith( QString pUsername );
+        void openPrivateChannelWith( const QString &pUsername );
 
         void loadJoinedChannelsFromServer( void );
         void loadJoinedChannelsFromDb( void );
-        void persistChannel( QSharedPointer<RocketChatChannel> pChannel );
-        void loadUsersOfChannel( QSharedPointer<RocketChatChannel> pChannel );
-        void subscribeChannel( QSharedPointer<RocketChatChannel> pChannel );
+        void persistChannel( const QSharedPointer<RocketChatChannel> &pChannel );
+        void loadUsersOfChannel( const QSharedPointer<RocketChatChannel> &pChannel );
+        void subscribeChannel( const QSharedPointer<RocketChatChannel> &pChannel );
         void subscribeChannel( const QString &pChannel );
 
-        void fillChannelWithMessages( QSharedPointer<RocketChatChannel> pChannel );
+        void fillChannelWithMessages( const QSharedPointer<RocketChatChannel> &pChannel );
 
         ChannelRepository *getChannels() const;
         void setChannels( ChannelRepository *pChannels );
@@ -103,13 +103,13 @@ class RocketChatChannelService : public QObject
         ChannelRepository *mChannels = nullptr;
         MeteorDDP *mDdp;
 
-        QVector<QSharedPointer<RocketChatChannel>> processChannelData( QJsonArray pChannelArray, bool pJoined, bool pUpdateOnly );
+        QVector<QSharedPointer<RocketChatChannel>> processChannelData( const QJsonArray &pChannelArray, bool pJoined, bool pUpdateOnly );
 
         MessageService *mMessageService;
     signals:
-        void channelsLoaded( channelVector pChannelList, bool pJoined );
-        void usersLoaded( QString roomId, userVector pUserList );
-        void directChannelReady( QString roomId, QString type );
+        void channelsLoaded( const channelVector &pChannelList, bool pJoined );
+        void usersLoaded( const QString &roomId, const userVector &pUserList );
+        void directChannelReady( const QString &roomId, const QString &type );
 };
 
 #endif // ROCKETCHATCHANNELFACTORY_H
diff --git a/websocket/linuxwebsocket/websocketlinux.cpp b/websocket/linuxwebsocket/websocketlinux.cpp
index 67199c6af303690f88cc78888d44ab5691e53aab..93cfe5e9898f0d39014b817f3509d47a81accada 100755
--- a/websocket/linuxwebsocket/websocketlinux.cpp
+++ b/websocket/linuxwebsocket/websocketlinux.cpp
@@ -34,7 +34,7 @@ websocketLinux::websocketLinux( QObject *parent ): WebsocketAbstract( parent ),
     connect( &mWebsocket, &QWebSocket::stateChanged, this, &websocketLinux::onStatusChanged, Qt::UniqueConnection );
 }
 
-void websocketLinux::open( QUrl url )
+void websocketLinux::open( const QUrl &url )
 {
     qDebug() << "open url";
     mWebsocket.open( url );
@@ -45,7 +45,7 @@ void websocketLinux::close()
     mWebsocket.close();
 }
 
-void websocketLinux::sendTextMessage( QString pMessage )
+void websocketLinux::sendTextMessage( const QString &pMessage )
 {
     if ( !mWebsocket.sendTextMessage( pMessage ) ) {
         qWarning() << "ddp did not send message: " << pMessage;
@@ -84,7 +84,7 @@ bool websocketLinux::isConnecting()
     return returnValue;
 }
 
-void websocketLinux::received( QString pMsg )
+void websocketLinux::received( const QString &pMsg )
 {
     emit( textMessageReceived( pMsg ) );
 }
diff --git a/websocket/linuxwebsocket/websocketlinux.h b/websocket/linuxwebsocket/websocketlinux.h
index 5a679d071cfb46ecb93d87cc0ac2a29a345882bc..6fdc58a3b530673a502c9082420f1efd1a2ba8e9 100755
--- a/websocket/linuxwebsocket/websocketlinux.h
+++ b/websocket/linuxwebsocket/websocketlinux.h
@@ -33,13 +33,13 @@ class websocketLinux: public WebsocketAbstract
 {
     public:
         websocketLinux( QObject *parent );
-        virtual void open( QUrl ) override;
+        virtual void open( const QUrl & ) override;
         virtual void close() override;
-        virtual void sendTextMessage( QString ) override;
+        virtual void sendTextMessage( const QString & ) override;
         virtual bool isValid( void ) override;
         virtual bool isDisconnected( void ) override;
         virtual bool isConnecting( void ) override;
-        void received( QString );
+        void received( const QString & );
         void onStatusChanged();
     private:
         QWebSocket mWebsocket;
diff --git a/websocket/websocket.cpp b/websocket/websocket.cpp
index df19655dcd67ed816cd37628a9a1ddcc730939ab..c43d64f0c49f284eda88aa350d4f201e11c5e6cc 100755
--- a/websocket/websocket.cpp
+++ b/websocket/websocket.cpp
@@ -37,7 +37,7 @@ Websocket::Websocket( QObject *parent ): WebsocketAbstract( parent )
     connect( mWebsocketInstance, &WebsocketAbstract::closed, this, &Websocket::closed, Qt::UniqueConnection );
 }
 
-void Websocket::open( QUrl pUrl )
+void Websocket::open( const QUrl &pUrl )
 {
     mWebsocketInstance->open( pUrl );
 }
@@ -47,7 +47,7 @@ void Websocket::close()
     mWebsocketInstance->close();
 }
 
-void Websocket::sendTextMessage( QString pMessage )
+void Websocket::sendTextMessage( const QString &pMessage )
 {
     mWebsocketInstance->sendTextMessage( pMessage );
 }
diff --git a/websocket/websocket.h b/websocket/websocket.h
index bdc08c2fd234056ec6e63322bdc7b212b41c42be..840b96326f4df41ed397cf37e68b1b6087c59bae 100755
--- a/websocket/websocket.h
+++ b/websocket/websocket.h
@@ -32,9 +32,9 @@ class Websocket: public WebsocketAbstract
     public:
         Websocket( QObject *parent );
 
-        virtual void open( QUrl ) override;
+        virtual void open( const QUrl & ) override;
         virtual void close( void ) override;
-        virtual void sendTextMessage( QString ) override;
+        virtual void sendTextMessage( const QString & ) override;
         virtual bool isValid( void ) override;
         virtual bool isDisconnected( void ) override;
         virtual bool isConnecting( void ) override;
diff --git a/websocket/websocketabstract.cpp b/websocket/websocketabstract.cpp
index 9fdb0f55a9261d2ded6cc5f3e1d355f08dd06d68..e6cb0cab14f45f3d739853d45a19403e897854ad 100755
--- a/websocket/websocketabstract.cpp
+++ b/websocket/websocketabstract.cpp
@@ -27,7 +27,7 @@ WebsocketAbstract::WebsocketAbstract( QObject *parent ): QObject( parent )
 
 }
 
-void WebsocketAbstract::sendTextMessage( QString )
+void WebsocketAbstract::sendTextMessage( const QString & )
 {
 
 }
diff --git a/websocket/websocketabstract.h b/websocket/websocketabstract.h
index 020f5a554fe24815f1b2a021cd3b43fe6e4fa867..4fe927b8c21e3212a58cadb30cebf19d405b0543 100755
--- a/websocket/websocketabstract.h
+++ b/websocket/websocketabstract.h
@@ -34,9 +34,9 @@ class WebsocketAbstract: public QObject
     public:
         WebsocketAbstract( QObject *parent );
 
-        virtual void open( QUrl ) = 0;
+        virtual void open( const QUrl & ) = 0;
         virtual void close( void ) = 0;
-        virtual void sendTextMessage( QString ) = 0;
+        virtual void sendTextMessage( const QString & ) = 0;
         virtual bool isValid( void ) = 0;
         virtual bool isDisconnected( void ) = 0;
         virtual bool isConnecting( void ) = 0;
@@ -44,8 +44,8 @@ class WebsocketAbstract: public QObject
     signals:
         void connected();
         void closed();
-        void textMessageReceived( QString );
-        void error( QString );
+        void textMessageReceived( const QString & );
+        void error( const QString & );
 };
 
 #endif // WEBSOCKET_H