diff --git a/devine/core/tracks/subtitle.py b/devine/core/tracks/subtitle.py
index 6ab4d02..036dc10 100644
--- a/devine/core/tracks/subtitle.py
+++ b/devine/core/tracks/subtitle.py
@@ -214,7 +214,7 @@ class Subtitle(Track):
 
             output_path.write_text(subtitle_text, encoding="utf8")
 
-        self.swap(output_path)
+        self.path = output_path
         self.codec = codec
 
         if callable(self.OnConverted):
diff --git a/devine/core/tracks/track.py b/devine/core/tracks/track.py
index 2025d7d..33d8188 100644
--- a/devine/core/tracks/track.py
+++ b/devine/core/tracks/track.py
@@ -299,8 +299,7 @@ class Track:
             else:
                 raise
 
-        self.swap(output_path)
-        self.move(original_path)
+        self.path = output_path
 
     def move(self, target: Union[Path, str]) -> bool:
         """
@@ -330,34 +329,5 @@ class Track:
 
         return success
 
-    def swap(self, target: Union[Path, str]) -> bool:
-        """
-        Delete the Track's file and swap to the Target file.
-
-        Raises:
-            TypeError: If the target argument is not the expected type.
-            OSError: If the file somehow failed to move.
-
-        Returns True if the swap succeeded, or False if the track is not yet downloaded,
-        or the target path does not exist.
-        """
-        if not isinstance(target, (str, Path)):
-            raise TypeError(f"Expected {target} to be a {Path} or {str}, not {type(target)}")
-
-        target = Path(target)
-
-        if not target.exists() or not self.path:
-            return False
-
-        self.path.unlink()
-
-        moved_to = Path(shutil.move(target, self.path))
-        success = moved_to.resolve() == self.path.resolve()
-
-        if not success:
-            return False
-
-        return self.move(target)
-
 
 __all__ = ("Track",)
diff --git a/devine/core/tracks/video.py b/devine/core/tracks/video.py
index c7cacc5..b3728c8 100644
--- a/devine/core/tracks/video.py
+++ b/devine/core/tracks/video.py
@@ -200,8 +200,7 @@ class Video(Track):
             str(output_path)
         ], check=True)
 
-        self.swap(output_path)
-        self.move(original_path)
+        self.path = output_path
 
     def ccextractor(
         self, track_id: Any, out_path: Union[Path, str], language: Language, original: bool = False
@@ -335,7 +334,7 @@ class Video(Track):
 
         log.info(" + Removed")
 
-        self.swap(cleaned_path)
+        self.path = cleaned_path
 
         return True