diff --git a/src/Datasets.jl b/src/Datasets.jl
index 723741b43813ca244e12b5a6cee4270e6c52d669..5f655c072c36df8790c922bc8bdd85c10409a486 100644
--- a/src/Datasets.jl
+++ b/src/Datasets.jl
@@ -1221,7 +1221,12 @@ end
 function pushdependency!(run::Run, datafile::String)
     if haskey(run.attributes, :dependencies)
         deps = object_or_array_of_objects(run.attributes[:dependencies])
-        push!(deps, as_dependency(datafile))
+        dep = as_dependency(datafile)
+        if (deps isa Vector && dep in deps) || dep == deps
+            @debug "Dependency already registered" dependency=dep
+        else
+            push!(deps, dep)
+        end
         run.attributes[:dependencies] = deps
     else
         run.attributes[:dependencies] = as_dependency(datafile)
diff --git a/src/Formats.jl b/src/Formats.jl
index eea33f64179e996e43f4b5970652f3af66412818..1273d6bd8e0326f186ce502ccdb3ef119a056df8 100644
--- a/src/Formats.jl
+++ b/src/Formats.jl
@@ -520,13 +520,13 @@ function load!(file::FIMTrack)
                                  framerate=file.framerate,
                                  pixelsize=file.pixelsize,
                                  kwargs...))
-    metadata = get!(file.run.attributes, :metadata, OrderedDict{Symbol, Any}())
-    camera = get!(metadata, :camera, OrderedDict{Symbol, Any}())
+    metadata = get!(OrderedDict{Symbol, Any}, file.run.attributes, :metadata)
+    camera = get!(OrderedDict{Symbol, Any}, metadata, :camera)
     camera[:framerate] = file.framerate
     if !isnothing(file.pixelsize)
         camera[:pixelsize] = file.pixelsize
     end
-    units = get!(file.run.attributes, :units, OrderedDict{Symbol, String}())
+    units = get!(OrderedDict{Symbol, String}, file.run.attributes, :units)
     units[:t] = "s"
     units[:framerate] = "fps"
     if !isnothing(file.pixelsize)
@@ -594,7 +594,7 @@ function labelledfiles(repository::String=".", chunks::Bool=false;
                 push!(files′, file′)
                 if file′ isa JSONLabels
                     for dep in getdependencies(file′)
-                        push!(get!(deps, dep, JSONLabels[]), file′)
+                        push!(get!(()->JSONLabels[], deps, dep), file′)
                     end
                 end
             end