diff --git a/client/src/main/java/ctbrec/ui/event/ShowNotification.java b/client/src/main/java/ctbrec/ui/event/ShowNotification.java
index 52107b6b..7333f7f0 100644
--- a/client/src/main/java/ctbrec/ui/event/ShowNotification.java
+++ b/client/src/main/java/ctbrec/ui/event/ShowNotification.java
@@ -22,7 +22,7 @@ public class ShowNotification extends Action {
         switch(evt.getType()) {
         case MODEL_STATUS_CHANGED:
             ModelStateChangedEvent modelEvent = (ModelStateChangedEvent) evt;
-            if (modelEvent.getOldState() == Model.State.UNKNOWN) {
+            if (modelEvent.getOldState() == Model.State.UNCHECKED) {
                 return;
             }
             var m = modelEvent.getModel();
diff --git a/common/src/main/java/ctbrec/AbstractModel.java b/common/src/main/java/ctbrec/AbstractModel.java
index 26f36b2c..8c766361 100644
--- a/common/src/main/java/ctbrec/AbstractModel.java
+++ b/common/src/main/java/ctbrec/AbstractModel.java
@@ -33,7 +33,7 @@ public abstract class AbstractModel implements Model {
     private boolean forcePriority = false;
     private boolean markedForLaterRecording = false;
     protected transient Site site;
-    protected State onlineState = State.UNKNOWN;
+    protected State onlineState = State.UNCHECKED;
     private Instant lastSeen;
     private Instant lastRecorded;
     private Instant recordUntil;
diff --git a/common/src/main/java/ctbrec/Model.java b/common/src/main/java/ctbrec/Model.java
index 4563bf08..c02496e9 100644
--- a/common/src/main/java/ctbrec/Model.java
+++ b/common/src/main/java/ctbrec/Model.java
@@ -26,7 +26,8 @@ public interface Model extends Comparable<Model>, Serializable {
         AWAY("away"),
         PRIVATE("private"),
         GROUP("group"),
-        UNKNOWN("unknown");
+        UNKNOWN("unknown"),
+        UNCHECKED("unchecked");
 
         final String display;
 
diff --git a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java
index 5d8393b3..0d7332b0 100644
--- a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java
+++ b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java
@@ -21,7 +21,7 @@ import java.util.Map;
 import java.util.concurrent.*;
 
 import static ctbrec.Model.State.OFFLINE;
-import static ctbrec.Model.State.UNKNOWN;
+import static ctbrec.Model.State.UNCHECKED;
 
 public class OnlineMonitor extends Thread {
     private static final Logger LOG = LoggerFactory.getLogger(OnlineMonitor.class);
@@ -101,7 +101,7 @@ public class OnlineMonitor extends Thread {
     }
     
     private void setModelStateNotified(Model model, Model.State state) {
-        Model.State oldState = states.getOrDefault(model, UNKNOWN);
+        Model.State oldState = states.getOrDefault(model, UNCHECKED);
         states.put(model, state);
         if (state != oldState) {
             EventBusHolder.BUS.post(new ModelStateChangedEvent(model, oldState, state));
diff --git a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
index 613e9fdd..352b542b 100644
--- a/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
+++ b/common/src/main/java/ctbrec/sites/amateurtv/AmateurTvModel.java
@@ -55,7 +55,7 @@ public class AmateurTvModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast || onlineState == UNKNOWN) {
+        if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) {
             try {
                 onlineState = isOnline(true) ? ONLINE : OFFLINE;
             } catch (InterruptedException e) {
diff --git a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java
index 981688a6..f8d87782 100644
--- a/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java
+++ b/common/src/main/java/ctbrec/sites/cam4/Cam4Model.java
@@ -86,7 +86,8 @@ public class Cam4Model extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast && onlineState == UNKNOWN) {
+        // TODO: should it be !failFast || onlineState ? as in AbstractHlsModel
+        if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) {
             try {
                 modelInfo = loadModelInfo();
             } catch (Exception e) {
diff --git a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java
index 2ef378e8..83c864c5 100644
--- a/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java
+++ b/common/src/main/java/ctbrec/sites/camsoda/CamsodaModel.java
@@ -205,7 +205,7 @@ public class CamsodaModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast && onlineState == UNKNOWN) {
+        if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) {
             loadModel();
         }
         return onlineState;
diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java
index d1dad529..39d27a61 100644
--- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java
+++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java
@@ -145,10 +145,10 @@ public class ChaturbateModel extends AbstractModel {
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
         if (failFast) {
-            if (onlineState != UNKNOWN) {
+            if (onlineState != UNCHECKED) {
                 return onlineState;
             } else {
-                setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse("unknown"));
+                setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse(null));
             }
         } else {
             if (isOffline()) {
diff --git a/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java b/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java
index c355a482..6115cd22 100644
--- a/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java
+++ b/common/src/main/java/ctbrec/sites/dreamcam/DreamcamModel.java
@@ -62,7 +62,7 @@ public class DreamcamModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (failFast && onlineState != UNKNOWN) {
+        if (failFast && onlineState != UNKNOWN && onlineState != UNCHECKED) {
             return onlineState;
         } else {
             try {
diff --git a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java
index 4c3b4f97..e6aa7c2b 100644
--- a/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java
+++ b/common/src/main/java/ctbrec/sites/fc2live/Fc2Model.java
@@ -96,7 +96,7 @@ public class Fc2Model extends AbstractModel {
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
         if (failFast) {
             return onlineState;
-        } else if (Objects.equals(onlineState, State.UNKNOWN)) {
+        } else if (onlineState == State.UNKNOWN || onlineState == State.UNCHECKED) {
             loadModelInfo();
         }
         return onlineState;
diff --git a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
index 1ab56e8b..c0455956 100644
--- a/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
+++ b/common/src/main/java/ctbrec/sites/mfc/MyFreeCamsModel.java
@@ -82,7 +82,7 @@ public class MyFreeCamsModel extends AbstractModel {
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
         if (state == null) {
-            return State.UNKNOWN;
+            return State.UNCHECKED;
         }
 
         if (!failFast) {
diff --git a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java
index dede64a0..69ac6575 100644
--- a/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java
+++ b/common/src/main/java/ctbrec/sites/streamate/StreamateModel.java
@@ -61,7 +61,7 @@ public class StreamateModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast && onlineState == UNKNOWN) {
+        if (!failFast && (onlineState == UNKNOWN || onlineState == UNCHECKED)) {
             return online ? ONLINE : OFFLINE;
         }
         return onlineState;
diff --git a/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java b/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java
index f5d1b4c4..7b294a66 100644
--- a/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java
+++ b/common/src/main/java/ctbrec/sites/streamray/StreamrayModel.java
@@ -70,7 +70,7 @@ public class StreamrayModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast || onlineState == UNKNOWN) {
+        if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) {
             try {
                 onlineState = isOnline(true) ? ONLINE : OFFLINE;
             } catch (InterruptedException e) {
diff --git a/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java b/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java
index e61ba7d9..46233dc1 100644
--- a/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java
+++ b/common/src/main/java/ctbrec/sites/winktv/WinkTvModel.java
@@ -71,7 +71,7 @@ public class WinkTvModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast || onlineState == UNKNOWN) {
+        if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) {
             try {
                 onlineState = isOnline(true) ? ONLINE : OFFLINE;
             } catch (InterruptedException e) {
diff --git a/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java b/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java
index 69d05257..ff0a4aee 100644
--- a/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java
+++ b/common/src/main/java/ctbrec/sites/xlovecam/XloveCamModel.java
@@ -47,7 +47,7 @@ public class XloveCamModel extends AbstractModel {
 
     @Override
     public State getOnlineState(boolean failFast) throws IOException, ExecutionException {
-        if (!failFast || onlineState == UNKNOWN) {
+        if (!failFast || onlineState == UNKNOWN || onlineState == UNCHECKED) {
             try {
                 onlineState = isOnline(true) ? ONLINE : OFFLINE;
             } catch (InterruptedException e) {