diff --git a/EDMarketConnector.py b/EDMarketConnector.py
index b8722298..263e98c5 100755
--- a/EDMarketConnector.py
+++ b/EDMarketConnector.py
@@ -410,7 +410,7 @@ class AppWindow:
         play_sound = (auto_update or int(event.type) == self.EVENT_VIRTUAL) and not config.getint('hotkey_mute')
         play_bad = False
 
-        if not monitor.cmdr or not monitor.mode or monitor.state['Captain']:
+        if not monitor.cmdr or not monitor.mode or monitor.state['Captain'] or not monitor.system or not monitor.station:
             return	# In CQC or on crew - do nothing
 
         if auto_update and monitor.carrying_rares():
@@ -446,10 +446,10 @@ class AppWindow:
             elif monitor.cmdr and data['commander']['name'] != monitor.cmdr:
                 raise companion.CmdrError()				# Companion API return doesn't match Journal
             elif ((auto_update and not data['commander'].get('docked')) or
-                  (monitor.system and data['lastSystem']['name'] != monitor.system) or
+                  (data['lastSystem']['name'] != monitor.system) or
                   (monitor.station and data['lastStarport']['name'] != monitor.station) or
-                  (monitor.state['ShipID'] is not None and data['ship']['id'] != monitor.state['ShipID']) or
-                  (monitor.state['ShipType'] and data['ship']['name'].lower() != monitor.state['ShipType'])):
+                  (data['ship']['id'] != monitor.state['ShipID']) or
+                  (data['ship']['name'].lower() != monitor.state['ShipType'])):
                 raise companion.ServerLagging()
 
             else:
@@ -589,8 +589,8 @@ class AppWindow:
             if not entry:
                 return
 
-
             # Update main window
+            self.cooldown()
             if monitor.cmdr and monitor.state['Captain']:
                 self.cmdr['text'] = '%s / %s' % (monitor.cmdr, monitor.state['Captain'])
                 self.ship_label['text'] = _('Role') + ':'	# Multicrew role label in main window
@@ -768,7 +768,12 @@ class AppWindow:
             self.w.after(1000, self.cooldown)
         else:
             self.button['text'] = self.theme_button['text'] = _('Update')	# Update button in main window
-            self.button['state'] = self.theme_button['state'] = tk.NORMAL
+            self.button['state'] = self.theme_button['state'] = (monitor.cmdr and
+                                                                 monitor.mode and
+                                                                 not monitor.state['Captain'] and
+                                                                 monitor.system and
+                                                                 monitor.station and
+                                                                 tk.NORMAL or tk.DISABLED)
 
     def ontop_changed(self, event=None):
         config.set('always_ontop', self.always_ontop.get())