diff --git a/GUI/coregui/mainwindow/projectmanager.cpp b/GUI/coregui/mainwindow/projectmanager.cpp
index 791efa118520888a361c7ed629a65f3eed126218..4e1914283bdfa5fe6f7373d0583d1c8dac0274a9 100644
--- a/GUI/coregui/mainwindow/projectmanager.cpp
+++ b/GUI/coregui/mainwindow/projectmanager.cpp
@@ -56,61 +56,95 @@ ProjectManager::~ProjectManager()
     delete m_messageService;
 }
 
-//! Close current project. Call save/discard/cancel dialog, if necessary.
-//! Returns false if saving was canceled.
+//! Reads settings of ProjectManager from global settings.
 
-bool ProjectManager::closeCurrentProject()
+void ProjectManager::readSettings()
 {
-    bool projectWasClosed(true);
+    QSettings settings;
+    m_workingDirectory = QDir::homePath();
+    if (settings.childGroups().contains(S_PROJECTMANAGER)) {
+        settings.beginGroup(S_PROJECTMANAGER);
+        m_workingDirectory = settings.value(S_DEFAULTPROJECTPATH).toString();
+        m_recentProjects = settings.value(S_RECENTPROJECTS).toStringList();
 
-    if (m_project_document && m_project_document->isModified()) {
-        QMessageBox msgBox;
-        msgBox.setText("The project has been modified.");
-        msgBox.setInformativeText("Do you want to save your changes?");
-        msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
-        msgBox.setDefaultButton(QMessageBox::Save);
-        int ret = msgBox.exec();
+        if(settings.contains(S_LASTUSEDIMPORTDIR))
+            m_importDirectory = settings.value(S_LASTUSEDIMPORTDIR, QString()).toString();
 
-        switch (ret) {
-        case QMessageBox::Save:
-            if (!saveProject())
-                projectWasClosed = false;
-            break;
-        case QMessageBox::Discard:
-            break;
-        case QMessageBox::Cancel:
-            projectWasClosed = false;
-            break;
-        default:
-            break;
-        }
+        settings.endGroup();
     }
+}
 
-    if (projectWasClosed)
-        deleteCurrentProject();
+//! Saves settings of ProjectManager in global settings.
 
-    return projectWasClosed;
+void ProjectManager::writeSettings()
+{
+    QSettings settings;
+    settings.beginGroup(S_PROJECTMANAGER);
+    settings.setValue(S_DEFAULTPROJECTPATH, m_workingDirectory);
+    settings.setValue(S_RECENTPROJECTS, m_recentProjects);
+
+    if(!m_importDirectory.isEmpty())
+        settings.setValue(S_LASTUSEDIMPORTDIR, m_importDirectory);
+
+    settings.endGroup();
 }
 
-//! Calls dialog window to define project path and name.
+ProjectDocument* ProjectManager::document()
+{
+    return m_project_document;
+}
 
-void ProjectManager::createNewProject()
+//! Returns list of recent projects, validates if projects still exists on disk.
+
+QStringList ProjectManager::recentProjects()
 {
-    if (m_project_document)
-        throw GUIHelpers::Error("ProjectManager::createNewProject() -> Project already exists");
+    QStringList updatedList;
+    foreach (QString fileName, m_recentProjects) {
+        QFile fin(fileName);
+        if (fin.exists())
+            updatedList.append(fileName);
+    }
+    m_recentProjects = updatedList;
+    return m_recentProjects;
+}
 
-    m_messageService->clear();
+//! Returns name of the current project directory.
 
-    m_project_document = new ProjectDocument();
-    connect(m_project_document, SIGNAL(modified()), this, SLOT(onDocumentModified()));
-    m_project_document->setProjectName("Untitled");
-    m_project_document->setApplicationModels(m_mainWindow->models());
-    m_project_document->setLogger(m_messageService);
+QString ProjectManager::projectDir() const
+{
+    if (m_project_document && m_project_document->hasValidNameAndPath())
+        return m_project_document->projectDir();
 
-    if(m_autosaveService)
-        m_autosaveService->setDocument(m_project_document);
+    return QString();
+}
+
+//! Returns directory name suitable for saving plots.
+
+QString ProjectManager::userExportDir() const
+{
+    QString result = projectDir();
+    if (result.isEmpty())
+        result = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
+
+    return result;
+}
+
+//! Returns directory name which was used by the user to import files.
+
+QString ProjectManager::userImportDir() const
+{
+    return m_importDirectory.isEmpty() ? userExportDir() : m_importDirectory;
 }
 
+//! Sets user import directory in system settings.
+
+void ProjectManager::setImportDir(const QString& dirname)
+{
+    m_importDirectory = dirname;
+}
+
+//! Updates title of main window when the project was modified.
+
 void ProjectManager::onDocumentModified()
 {
     qDebug() << "ProjectManager::onDocumentModified()" << m_project_document->isModified();
@@ -121,6 +155,16 @@ void ProjectManager::onDocumentModified()
     }
 }
 
+//! Clears list of recent projects.
+
+void ProjectManager::clearRecentProjects()
+{
+    m_recentProjects.clear();
+    modified();
+}
+
+//! Processes new project request (close old project, rise dialog for project name, create project).
+
 void ProjectManager::newProject()
 {
     if (!closeCurrentProject())
@@ -134,6 +178,43 @@ void ProjectManager::newProject()
     }
 }
 
+//! Processes close current project request. Call save/discard/cancel dialog, if necessary.
+//! Returns false if saving was canceled.
+
+bool ProjectManager::closeCurrentProject()
+{
+    bool projectWasClosed(true);
+
+    if (m_project_document && m_project_document->isModified()) {
+        QMessageBox msgBox;
+        msgBox.setText("The project has been modified.");
+        msgBox.setInformativeText("Do you want to save your changes?");
+        msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
+        msgBox.setDefaultButton(QMessageBox::Save);
+        int ret = msgBox.exec();
+
+        switch (ret) {
+        case QMessageBox::Save:
+            if (!saveProject())
+                projectWasClosed = false;
+            break;
+        case QMessageBox::Discard:
+            break;
+        case QMessageBox::Cancel:
+            projectWasClosed = false;
+            break;
+        default:
+            break;
+        }
+    }
+
+    if (projectWasClosed)
+        deleteCurrentProject();
+
+    return projectWasClosed;
+}
+
+//! Processes save project request.
 
 bool ProjectManager::saveProject(QString projectFileName)
 {
@@ -160,6 +241,8 @@ bool ProjectManager::saveProject(QString projectFileName)
     return true;
 }
 
+//! Processes 'save project as' request.
+
 bool ProjectManager::saveProjectAs()
 {
     QString projectFileName = acquireProjectFileName();
@@ -206,105 +289,58 @@ void ProjectManager::openProject(QString fileName)
     emit modified();
 }
 
-//! Add name of the current project to the name of recent projects
-
-void ProjectManager::addToRecentProjects()
-{
-    QString fileName = m_project_document->projectFileName();
-    m_recentProjects.removeAll(fileName);
-    m_recentProjects.prepend(fileName);
-    while (m_recentProjects.size() > Constants::MAX_RECENT_PROJECTS)
-        m_recentProjects.removeLast();
-}
-
-//! Reads settings of ProjectManager from global settings.
-
-void ProjectManager::readSettings()
-{
-    QSettings settings;
-    m_workingDirectory = QDir::homePath();
-    if (settings.childGroups().contains(S_PROJECTMANAGER)) {
-        settings.beginGroup(S_PROJECTMANAGER);
-        m_workingDirectory = settings.value(S_DEFAULTPROJECTPATH).toString();
-        m_recentProjects = settings.value(S_RECENTPROJECTS).toStringList();
-
-        if(settings.contains(S_LASTUSEDIMPORTDIR))
-            m_importDirectory = settings.value(S_LASTUSEDIMPORTDIR, QString()).toString();
-
-        settings.endGroup();
-    }
-}
-
-//! Saves settings of ProjectManager in global settings.
+//! Calls dialog window to define project path and name.
 
-void ProjectManager::writeSettings()
+void ProjectManager::createNewProject()
 {
-    QSettings settings;
-    settings.beginGroup(S_PROJECTMANAGER);
-    settings.setValue(S_DEFAULTPROJECTPATH, m_workingDirectory);
-    settings.setValue(S_RECENTPROJECTS, m_recentProjects);
-
-    if(!m_importDirectory.isEmpty())
-        settings.setValue(S_LASTUSEDIMPORTDIR, m_importDirectory);
+    if (m_project_document)
+        throw GUIHelpers::Error("ProjectManager::createNewProject() -> Project already exists");
 
-    settings.endGroup();
-}
+    m_messageService->clear();
 
-//! Returns list of recent projects, validates if projects still exists on disk.
+    m_project_document = new ProjectDocument();
+    connect(m_project_document, SIGNAL(modified()), this, SLOT(onDocumentModified()));
+    m_project_document->setProjectName("Untitled");
+    m_project_document->setApplicationModels(m_mainWindow->models());
+    m_project_document->setLogger(m_messageService);
 
-QStringList ProjectManager::recentProjects()
-{
-    QStringList updatedList;
-    foreach (QString fileName, m_recentProjects) {
-        QFile fin(fileName);
-        if (fin.exists())
-            updatedList.append(fileName);
-    }
-    m_recentProjects = updatedList;
-    return m_recentProjects;
+    if(m_autosaveService)
+        m_autosaveService->setDocument(m_project_document);
 }
 
-//! Returns name of the current project directory.
-
-QString ProjectManager::projectDir() const
+void ProjectManager::deleteCurrentProject()
 {
-    if (m_project_document && m_project_document->hasValidNameAndPath())
-        return m_project_document->projectDir();
+    if(m_autosaveService)
+        m_autosaveService->removeAutosaveDir();
 
-    return QString();
+    delete m_project_document;
+    m_project_document = 0;
+    m_mainWindow->models()->resetModels();
 }
 
-//! Returns directory name suitable for saving plots.
+//! Returns project file name from dialog.
 
-QString ProjectManager::userExportDir() const
+QString ProjectManager::acquireProjectFileName()
 {
-    QString result = projectDir();
-    if (result.isEmpty())
-        result = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
-
-    return result;
-}
-
-//! Returns directory name which was used by the user to import files.
+    NewProjectDialog dialog(m_mainWindow, workingDirectory(), untitledProjectName());
 
-QString ProjectManager::userImportDir() const
-{
-    return m_importDirectory.isEmpty() ? userExportDir() : m_importDirectory;
-}
+    if (dialog.exec() != QDialog::Accepted)
+        return QString();
 
-//! Sets user import directory in system settings.
+    m_workingDirectory = dialog.getWorkingDirectory();
 
-void ProjectManager::setImportDir(const QString& dirname)
-{
-    m_importDirectory = dirname;
+    return dialog.getProjectFileName();
 }
 
-//! Clears list of recent projects.
+//! Add name of the current project to the name of recent projects
 
-void ProjectManager::clearRecentProjects()
+void ProjectManager::addToRecentProjects()
 {
-    m_recentProjects.clear();
-    modified();
+    QString fileName = m_project_document->projectFileName();
+    m_recentProjects.removeAll(fileName);
+    m_recentProjects.prepend(fileName);
+    while (m_recentProjects.size() > Constants::MAX_RECENT_PROJECTS)
+        m_recentProjects.removeLast();
 }
 
 //! Returns default project path.
@@ -352,27 +388,3 @@ void ProjectManager::riseProjectLoadWarningDialog()
     warningDialog->show();
     warningDialog->raise();
 }
-
-void ProjectManager::deleteCurrentProject()
-{
-    if(m_autosaveService)
-        m_autosaveService->removeAutosaveDir();
-
-    delete m_project_document;
-    m_project_document = 0;
-    m_mainWindow->models()->resetModels();
-}
-
-//! Returns project file name from dialog.
-
-QString ProjectManager::acquireProjectFileName()
-{
-    NewProjectDialog dialog(m_mainWindow, workingDirectory(), untitledProjectName());
-
-    if (dialog.exec() != QDialog::Accepted)
-        return QString();
-
-    m_workingDirectory = dialog.getWorkingDirectory();
-
-    return dialog.getProjectFileName();
-}
diff --git a/GUI/coregui/mainwindow/projectmanager.h b/GUI/coregui/mainwindow/projectmanager.h
index 575312cc4d1144a7ccebeae20dcd04febaa6dee3..1336a026cb1d41f5e758235075217f8a2ce8d207 100644
--- a/GUI/coregui/mainwindow/projectmanager.h
+++ b/GUI/coregui/mainwindow/projectmanager.h
@@ -35,16 +35,12 @@ public:
     ProjectManager(MainWindow* parent);
     virtual ~ProjectManager();
 
-    void createNewProject();
-    bool closeCurrentProject();
-
     void readSettings();
     void writeSettings();
 
-    QStringList recentProjects();
-
-    ProjectDocument* document() { return m_project_document; }
+    ProjectDocument* document();
 
+    QStringList recentProjects();
     QString projectDir() const;
     QString userExportDir() const;
     QString userImportDir() const;
@@ -55,14 +51,18 @@ signals:
     void projectOpened();
 
 public slots:
-    void clearRecentProjects();
     void onDocumentModified();
+    void clearRecentProjects();
+    void newProject();
+    bool closeCurrentProject();
     bool saveProject(QString projectFileName = QString());
     bool saveProjectAs();
     void openProject(QString fileName = QString());
-    void newProject();
 
 private:
+    void createNewProject();
+    void deleteCurrentProject();
+    QString acquireProjectFileName();
     void addToRecentProjects();
 
     QString workingDirectory();
@@ -71,11 +71,6 @@ private:
     void riseProjectLoadFailedDialog();
     void riseProjectLoadWarningDialog();
 
-    void deleteCurrentProject();
-
-    QString acquireProjectFileName();
-
-
     MainWindow* m_mainWindow;
     ProjectDocument* m_project_document;