diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 9f023b0469..37aecab043 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -682,15 +682,18 @@ mob/dead/observer/MayRespawn(var/feedback = 0)
return 0
return 1
+/atom/proc/extra_ghost_link()
+ return
+
+/mob/extra_ghost_link(var/atom/ghost)
+ if(mind && eyeobj)
+ return "|eye"
+
+/mob/dead/observer/extra_ghost_link(var/atom/ghost)
+ if(mind && mind.current)
+ return "|body"
+
/proc/ghost_follow_link(var/atom/target, var/atom/ghost)
if((!target) || (!ghost)) return
. = "follow"
-
- if(istype(target, /mob/dead/observer))
- var/mob/dead/observer/O = target
- if(O.mind && O.mind.current)
- . += "|body"
- else if(istype(target, /mob)) // Eye follow links
- var/mob/M = target
- if(M.client && M.eyeobj) // No point following clientless eyes
- . += "|eye"
+ . += target.extra_ghost_link(ghost)