diff --git a/actions/ost-compare-ligand-structures b/actions/ost-compare-ligand-structures
index a246b13af3bffd0491e509e64f3ce08ba62d6b08..d8e55d6b5a22bdd332bf46192b9e839fb56adeec 100644
--- a/actions/ost-compare-ligand-structures
+++ b/actions/ost-compare-ligand-structures
@@ -379,8 +379,6 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
         # Replace model ligand by path
         if len(model_ligands) == len(scorer.model_ligands):
             # Map ligand => path
-            model_ligands_map = {k.hash_code: v for k, v in zip(
-                scorer.model_ligands, args.model_ligands)}
             out["model_ligands"] = args.model_ligands
         elif len(model_ligands) < len(scorer.model_ligands):
             # Multi-ligand SDF files were given
@@ -396,16 +394,16 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
                                "(%d) than given (%d)" % (
                 len(scorer.model_ligands), len(model_ligands)))
     else:
-        model_ligands_map = {l.hash_code: _QualifiedResidueNotation(l)
-                             for l in scorer.model_ligands}
-        out["model_ligands"] = list(model_ligands_map.values())
+        # Map ligand => qualified residue
+        out["model_ligands"] = [_QualifiedResidueNotation(l) for l in scorer.model_ligands]
+
+    model_ligands_map = {k.hash_code: v for k, v in zip(
+        scorer.model_ligands, out["model_ligands"])}
 
     if reference_ligands is not None:
         # Replace reference ligand by path
         if len(reference_ligands) == len(scorer.target_ligands):
             # Map ligand => path
-            reference_ligands_map = {k.hash_code: v for k, v in zip(
-                scorer.target_ligands, args.reference_ligands)}
             out["reference_ligands"] = args.reference_ligands
         elif len(reference_ligands) < len(scorer.target_ligands):
             # Multi-ligand SDF files were given
@@ -422,9 +420,12 @@ def _Process(model, model_ligands, reference, reference_ligands, args):
                 len(scorer.target_ligands), len(reference_ligands)))
 
     else:
-        reference_ligands_map = {l.hash_code: _QualifiedResidueNotation(l)
-                             for l in scorer.target_ligands}
-        out["reference_ligands"] = list(reference_ligands_map.values())
+        # Map ligand => qualified residue
+        out["reference_ligands"] = [_QualifiedResidueNotation(l) for l in scorer.target_ligands]
+
+    reference_ligands_map = {k.hash_code: v for k, v in zip(
+        scorer.target_ligands, out["reference_ligands"])}
+        
 
     if not (args.lddt_pli or args.rmsd):
         ost.LogWarning("No score selected, output will be empty.")