diff --git a/projects/vfs/src/python/vfs/impl.py b/projects/vfs/src/python/vfs/impl.py
index 3f451f0..b405b75 100644
--- a/projects/vfs/src/python/vfs/impl.py
+++ b/projects/vfs/src/python/vfs/impl.py
@@ -28,12 +28,14 @@ class Vfs(object):
 
             elif e[0] == "link":
                 _, src, dest = e
-                if dest.exists() and dest.is_symlink() and dest.readlink() == dest:
-                    continue
-                else:
-                    if dest.exists():
+                if dest.is_file() or dest.is_symlink():
+                    if dest.is_symlink() and dest.readlink() == src:
+                        continue
+                    else:
                         dest.unlink()
-                    dest.symlink_to(src)
+
+                assert not dest.exists()
+                dest.symlink_to(src)
 
             elif e[0] == "copy":
                 raise NotImplementedError()