diff --git a/jellyfin_kodi/database/jellyfin_db.py b/jellyfin_kodi/database/jellyfin_db.py
index a518b830..0cbe9dd6 100644
--- a/jellyfin_kodi/database/jellyfin_db.py
+++ b/jellyfin_kodi/database/jellyfin_db.py
@@ -71,6 +71,15 @@ class JellyfinDatabase():
         except TypeError:
             return
 
+    def get_episode_kodi_parent_path_id(self, *args):
+
+        try:
+            self.cursor.execute(QU.get_episode_kodi_parent_path_id, args)
+
+            return self.cursor.fetchone()[0]
+        except TypeError:
+            return
+
     def get_full_item_by_kodi_id(self, *args):
 
         try:
diff --git a/jellyfin_kodi/database/queries.py b/jellyfin_kodi/database/queries.py
index e1c3eb69..52d68846 100644
--- a/jellyfin_kodi/database/queries.py
+++ b/jellyfin_kodi/database/queries.py
@@ -166,3 +166,17 @@ WHERE           jellyfin_parent_id = ?
 delete_version = """
 DELETE FROM     version
 """
+
+get_episode_kodi_parent_path_id = """
+SELECT          sh.kodi_pathid
+FROM            jellyfin e
+JOIN            jellyfin s
+ON              e.parent_id = s.kodi_id
+JOIN            jellyfin sh
+ON              s.parent_id = sh.kodi_id
+WHERE           e.media_type = ?
+AND             s.media_type = ?
+AND             sh.media_type = ?
+AND             e.jellyfin_id = ?;
+"""
+get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"]
diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py
index 1782425a..9f7c9dad 100644
--- a/jellyfin_kodi/objects/kodi/kodi.py
+++ b/jellyfin_kodi/objects/kodi/kodi.py
@@ -77,6 +77,9 @@ class Kodi(object):
         except TypeError:
             return
 
+    def update_path_parent_id(self, path_id, parent_path_id):
+        self.cursor.execute(QU.update_path_parent_id, (parent_path_id, path_id))
+
     def update_path(self, *args):
         self.cursor.execute(QU.update_path, args)
 
diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py
index e6b0783c..bab23e31 100644
--- a/jellyfin_kodi/objects/kodi/queries.py
+++ b/jellyfin_kodi/objects/kodi/queries.py
@@ -342,17 +342,22 @@ VALUES          (?, ?, ?)
 """
 add_episode = """
 INSERT INTO     episode(idEpisode, idFile, c00, c01, c03, c04, c05, c09, c10, c12, c13, c14,
-                idShow, c15, c16, idSeason)
-VALUES          (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+                idShow, c15, c16, idSeason, c18, c19, c20)
+VALUES          (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
 """
 add_episode_obj = ["{EpisodeId}", "{FileId}", "{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}",
                    "{Directors}", "{Season}", "{Index}", "{Title}", "{ShowId}", "{AirsBeforeSeason}",
-                   "{AirsBeforeEpisode}", "{SeasonId}"]
+                   "{AirsBeforeEpisode}", "{SeasonId}", "{FullFilePath}", "{PathId}", "{Unique}"]
 add_art = """
 INSERT INTO     art(media_id, media_type, type, url)
 VALUES          (?, ?, ?, ?)
 """
 
+update_path_parent_id = """
+UPDATE      path
+SET         idParentPath = ?
+where       idPath = ?
+"""
 
 update_path = """
 UPDATE      path
@@ -361,9 +366,11 @@ WHERE       idPath = ?
 """
 update_path_movie_obj = ["{Path}", "movies", "metadata.local", 1, "{PathId}"]
 update_path_toptvshow_obj = ["{TopLevel}", "tvshows", "metadata.local", 1, "{TopPathId}"]
+update_path_toptvshow_addon_obj = ["{TopLevel}", None, None, 1, "{TopPathId}"]
 update_path_tvshow_obj = ["{Path}", None, None, 1, "{PathId}"]
 update_path_episode_obj = ["{Path}", None, None, 1, "{PathId}"]
-update_path_mvideo_obj = ["{Path}", "musicvideos", None, 1, "{PathId}"]
+update_path_mvideo_obj = ["{Path}", "musicvideos", "metadata.local", 1, "{PathId}"]
+
 update_file = """
 UPDATE      files
 SET         idPath = ?, strFilename = ?, dateAdded = ?
@@ -483,12 +490,13 @@ WHERE       idSeason = ?
 update_episode = """
 UPDATE      episode
 SET         c00 = ?, c01 = ?, c03 = ?, c04 = ?, c05 = ?, c09 = ?, c10 = ?,
-            c12 = ?, c13 = ?, c14 = ?, c15 = ?, c16 = ?, idSeason = ?, idShow = ?
+            c12 = ?, c13 = ?, c14 = ?, c15 = ?, c16 = ?, idSeason = ?, idShow = ?,
+            c18 = ?, c19 = ?, c20 = ?
 WHERE       idEpisode = ?
 """
 update_episode_obj = ["{Title}", "{Plot}", "{RatingId}", "{Writers}", "{Premiere}", "{Runtime}", "{Directors}",
                       "{Season}", "{Index}", "{Title}", "{AirsBeforeSeason}", "{AirsBeforeEpisode}", "{SeasonId}",
-                      "{ShowId}", "{EpisodeId}"]
+                      "{ShowId}", "{FullFilePath}", "{PathId}", "{Unique}", "{EpisodeId}"]
 
 
 delete_path = """
diff --git a/jellyfin_kodi/objects/tvshows.py b/jellyfin_kodi/objects/tvshows.py
index 3b169e1b..31b89ba4 100644
--- a/jellyfin_kodi/objects/tvshows.py
+++ b/jellyfin_kodi/objects/tvshows.py
@@ -169,7 +169,19 @@ class TVShows(KodiDb):
         self.add_unique_id(*values(obj, QU.add_unique_id_tvshow_obj))
 
         obj['TopPathId'] = self.add_path(obj['TopLevel'])
-        self.update_path(*values(obj, QU.update_path_toptvshow_obj))
+
+        if self.direct_path:
+            # Normal way, we use the actual top path
+            self.update_path(*values(obj, QU.update_path_toptvshow_obj))
+        else:
+            # Hack to allow cast information in add-on mode
+            # We create a path on top of all others that holds mediaType and scrapper
+            self.update_path(*values(obj, QU.update_path_toptvshow_addon_obj))
+            temp_obj = dict()
+            temp_obj['TopLevel'] = 'plugin://plugin.video.jellyfin/'
+            temp_obj['TopPathId'] = self.add_path(temp_obj['TopLevel'])
+            self.update_path(*values(temp_obj, QU.update_path_toptvshow_obj))
+            self.update_path_parent_id(obj['TopPathId'], temp_obj['TopPathId'])
 
         obj['PathId'] = self.add_path(*values(obj, QU.get_path_obj))
 
@@ -177,6 +189,8 @@ class TVShows(KodiDb):
         self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_tvshow_obj))
         LOG.debug("ADD tvshow [%s/%s/%s] %s: %s", obj['TopPathId'], obj['PathId'], obj['ShowId'], obj['Title'], obj['Id'])
 
+        self.update_path_parent_id(obj['PathId'], obj['TopPathId'])
+
     def tvshow_update(self, obj):
 
         ''' Update object to kodi.
@@ -187,10 +201,14 @@ class TVShows(KodiDb):
         obj['Unique'] = self.get_unique_id(*values(obj, QU.get_unique_id_tvshow_obj))
         self.update_unique_id(*values(obj, QU.update_unique_id_tvshow_obj))
 
+        obj['TopPathId'] = self.get_path(obj['TopLevel'])
+
         self.update(*values(obj, QU.update_tvshow_obj))
         self.jellyfin_db.update_reference(*values(obj, QUEM.update_reference_obj))
         LOG.debug("UPDATE tvshow [%s/%s] %s: %s", obj['PathId'], obj['ShowId'], obj['Title'], obj['Id'])
 
+        self.update_path_parent_id(obj['PathId'], obj['TopPathId'])
+
     def get_path_filename(self, obj):
 
         ''' Get the path and build it into protocol://path
@@ -200,6 +218,9 @@ class TVShows(KodiDb):
             if '\\' in obj['Path']:
                 obj['Path'] = "%s\\" % obj['Path']
                 obj['TopLevel'] = "%s\\" % dirname(dirname(obj['Path']))
+            elif 'smb://' in obj['Path'] or 'nfs://' in obj['Path']:
+                obj['Path'] = "%s/" % obj['Path']
+                obj['TopLevel'] = "%s/" % dirname(dirname(obj['Path']))
             else:
                 obj['Path'] = "%s/" % obj['Path']
                 obj['TopLevel'] = "plugin://plugin.video.jellyfin/"
@@ -377,6 +398,12 @@ class TVShows(KodiDb):
             return self.episode_add(obj)
 
         self.jellyfin_db.add_reference(*values(obj, QUEM.add_reference_episode_obj))
+
+        parentPathId = self.jellyfin_db.get_episode_kodi_parent_path_id(*values(obj, QUEM.get_episode_kodi_parent_path_id_obj))
+        if obj['PathId'] != parentPathId:
+            LOG.debug("Setting episode pathParentId, episode %s, title %s, pathId %s, pathParentId %s", obj['Id'], obj['Title'], obj['PathId'], parentPathId)
+            self.update_path_parent_id(obj['PathId'], parentPathId)
+
         LOG.debug("ADD episode [%s/%s] %s: %s", obj['PathId'], obj['FileId'], obj['Id'], obj['Title'])
 
     def episode_update(self, obj):
@@ -423,8 +450,13 @@ class TVShows(KodiDb):
                 obj['Filename'] = 'index.bdmv'
                 LOG.debug("Bluray directory %s", obj['Path'])
 
+            obj['FullFilePath'] = obj['Path'] + obj['Filename']
+
         else:
-            obj['Path'] = "plugin://plugin.video.jellyfin/%s/" % obj['SeriesId']
+            # We need LibraryId
+            library = self.library or find_library(self.server, obj)
+            obj['LibraryId'] = library['Id']
+            obj['Path'] = "plugin://plugin.video.jellyfin/%s/%s/" % (obj['LibraryId'], obj['SeriesId'])
             params = {
                 'filename': py2_encode(obj['Filename'], 'utf-8'),
                 'id': obj['Id'],
@@ -432,6 +464,7 @@ class TVShows(KodiDb):
                 'mode': "play"
             }
             obj['Filename'] = "%s?%s" % (obj['Path'], urlencode(params))
+            obj['FullFilePath'] = obj['Filename']
 
     def get_show_id(self, obj):
         obj['ShowId'] = self.jellyfin_db.get_item_by_id(*values(obj, QUEM.get_item_series_obj))