installEventFilter(new JumpKeyHandler(this));
 
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
-  connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&)));
-  connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&)));
   connect(app, SIGNAL(aboutToQuit()), SLOT(aboutToQuit()));
 }
 
 }
 
 void MainWin::restoreStateFromSettings(UiSettings &s) {
+  _normalSize = s.value("MainWinSize", size()).toSize();
+  _normalPos = s.value("MainWinPos", pos()).toPoint();
+
   restoreGeometry(s.value("MainWinGeometry").toByteArray());
   if(isMaximized()) {
     // restoreGeometry() fails if the windows was maximized, so we resize and position explicitly
-    resize(s.value("MainWinSize", QSize(800, 500)).toSize());
-    move(s.value("MainWinPos").toPoint());
+    resize(_normalSize);
+    move(_normalPos);
   }
 
   restoreState(s.value("MainWinState").toByteArray());
   if(!(windowState() & Qt::WindowMaximized))
     _normalPos = event->pos();
 
-  event->ignore();
+  QMainWindow::moveEvent(event);
 }
 
 void MainWin::resizeEvent(QResizeEvent *event) {
   if(!(windowState() & Qt::WindowMaximized))
     _normalSize = event->size();
 
-  event->ignore();
+  QMainWindow::resizeEvent(event);
 }
 
 void MainWin::closeEvent(QCloseEvent *event) {
   QtUiSettings s;
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   Q_ASSERT(app);
-  if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
-    toggleMinimizedToTray();
+  if(!app->isAboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
+    hideToTray();
     event->ignore();
   } else {
     event->accept();
   logWidget->show();
 }
 
-// FIXME
-void MainWin::saveStateToSession(const QString &sessionId) {
-  return;
-  SessionSettings s(sessionId);
-
-  s.setValue("MainWinSize", size());
-  s.setValue("MainWinPos", pos());
-  s.setValue("MainWinState", saveState());
-}
-
-// FIXME
-void MainWin::saveStateToSessionSettings(SessionSettings & s)
-{
-  s.setValue("MainWinSize", size());
-  s.setValue("MainWinPos", pos());
-  s.setValue("MainWinState", saveState());
-}
-
 void MainWin::showStatusBarMessage(const QString &message) {
   statusBar()->showMessage(message, 10000);
 }
 
 
 void QtUiApplication::saveState(QSessionManager & manager) {
   //qDebug() << QString("saving session state to id %1").arg(manager.sessionId());
-  AccountId activeCore = Client::currentCoreAccount();
+  AccountId activeCore = Client::currentCoreAccount(); // FIXME store this!
   SessionSettings s(manager.sessionId());
   s.setSessionAge(0);
-  emit saveStateToSession(manager.sessionId());
-  emit saveStateToSessionSettings(s);
+  QtUi::mainWindow()->saveStateToSettings(s);
 }
 
 void QtUiApplication::resumeSessionIfPossible() {
     SessionSettings s(sessionId());
     s.sessionAging();
     s.setSessionAge(0);
-    emit resumeFromSession(sessionId());
-    emit resumeFromSessionSettings(s);
+    QtUi::mainWindow()->restoreStateFromSettings(s);
     s.cleanup();
   } else {
     SessionSettings s(QString("1"));
 
   virtual void commitData(QSessionManager &manager);
   virtual void saveState(QSessionManager &manager);
 
-  inline bool aboutToQuit() const { return _aboutToQuit; }
-
-signals:
-  void saveStateToSession(const QString &sessionId);
-  void saveStateToSessionSettings(SessionSettings &s); // FIXME refs in signals won't probably work
-  void resumeFromSession(const QString sessionId);
-  void resumeFromSessionSettings(SessionSettings &s);
+  inline bool isAboutToQuit() const { return _aboutToQuit; }
 
 private:
   bool _aboutToQuit;