diff --git a/modules/mol/alg/pymod/ligand_scoring.py b/modules/mol/alg/pymod/ligand_scoring.py
index 866a71cc5c174b1ae47da80d42fb3960232f74a2..330b13683965054aefc5805c7e88a64caf37b6df 100644
--- a/modules/mol/alg/pymod/ligand_scoring.py
+++ b/modules/mol/alg/pymod/ligand_scoring.py
@@ -656,13 +656,13 @@ class LigandScorer:
             trg_idx, mdl_idx = assignment
             mdl_lig = self.model_ligands[mdl_idx]
             mdl_cname = mdl_lig.chain.name
-            mdl_restuple = (mdl_lig.number.num, mdl_lig.number.ins_code)
+            mdl_resnum = mdl_lig.number
             if mdl_cname not in out_main:
                 out_main[mdl_cname] = {}
                 out_details[mdl_cname] = {}
-            out_main[mdl_cname][mdl_restuple] = data[
+            out_main[mdl_cname][mdl_resnum] = data[
                 trg_idx, mdl_idx][main_key]
-            out_details[mdl_cname][mdl_restuple] = data[
+            out_details[mdl_cname][mdl_resnum] = data[
                 trg_idx, mdl_idx]
         return out_main, out_details
 
@@ -727,7 +727,7 @@ class LigandScorer:
     @property
     def rmsd(self):
         """Get a dictionary of RMSD score values, keyed by model ligand
-        (chain name, tuple(residue number, insertion code)).
+        (chain name, :class:`~ost.mol.ResNum`).
 
         :rtype: :class:`dict`
         """
@@ -738,7 +738,7 @@ class LigandScorer:
     @property
     def rmsd_details(self):
         """Get a dictionary of RMSD score details (dictionaries), keyed by
-        model ligand (chain name, tuple(residue number, insertion code)).
+        model ligand (chain name, :class:`~ost.mol.ResNum`).
 
         Each sub-dictionary contains the following information:
 
@@ -767,7 +767,7 @@ class LigandScorer:
     @property
     def lddt_pli(self):
         """Get a dictionary of lDDT-PLI score values, keyed by model ligand
-        (chain name, tuple(residue number, insertion code)).
+        (chain name, :class:`~ost.mol.ResNum`).
 
         :rtype: :class:`dict`
         """
@@ -778,7 +778,7 @@ class LigandScorer:
     @property
     def lddt_pli_details(self):
         """Get a dictionary of lDDT-PLI score details (dictionaries), keyed by
-        model ligand (chain name, tuple(residue number, insertion code)).
+        model ligand (chain name, :class:`~ost.mol.ResNum`).
 
         Each sub-dictionary contains the following information:
 
diff --git a/modules/mol/alg/tests/test_ligand_scoring.py b/modules/mol/alg/tests/test_ligand_scoring.py
index 79b80751be3bc3767b8b5901fb3f2b76221af275..27d86bdaf17ebd465447ccd66e56fba3e66dcacd 100644
--- a/modules/mol/alg/tests/test_ligand_scoring.py
+++ b/modules/mol/alg/tests/test_ligand_scoring.py
@@ -301,38 +301,38 @@ class TestLigandScoring(unittest.TestCase):
         self.assertFalse(expected_keys.symmetric_difference(sc.lddt_pli_details.keys()))
 
         # rmsd
-        self.assertAlmostEqual(sc.rmsd["J"][(1, "\x00")], 0.8016608357429504, 5)
-        self.assertAlmostEqual(sc.rmsd["F"][(1, "\x00")], 0.9286373257637024, 5)
+        self.assertAlmostEqual(sc.rmsd["J"][mol.ResNum(1)], 0.8016608357429504, 5)
+        self.assertAlmostEqual(sc.rmsd["F"][mol.ResNum(1)], 0.9286373257637024, 5)
         # rmsd_details
-        self.assertEqual(sc.rmsd_details["J"][(1, "\x00")]["chain_mapping"], {'F': 'D', 'C': 'C'})
-        self.assertEqual(sc.rmsd_details["J"][(1, "\x00")]["bs_num_res"], 15)
-        self.assertEqual(sc.rmsd_details["J"][(1, "\x00")]["bs_num_overlap_res"], 15)
-        self.assertEqual(sc.rmsd_details["J"][(1, "\x00")]["target_ligand"].qualified_name, 'I.G3D1')
-        self.assertEqual(sc.rmsd_details["J"][(1, "\x00")]["model_ligand"].qualified_name, 'J.G3D1')
-        self.assertEqual(sc.rmsd_details["F"][(1, "\x00")]["chain_mapping"], {'B': 'B', 'G': 'A'})
-        self.assertEqual(sc.rmsd_details["F"][(1, "\x00")]["bs_num_res"], 15)
-        self.assertEqual(sc.rmsd_details["F"][(1, "\x00")]["bs_num_overlap_res"], 15)
-        self.assertEqual(sc.rmsd_details["F"][(1, "\x00")]["target_ligand"].qualified_name, 'K.G3D1')
-        self.assertEqual(sc.rmsd_details["F"][(1, "\x00")]["model_ligand"].qualified_name, 'F.G3D1')
+        self.assertEqual(sc.rmsd_details["J"][mol.ResNum(1)]["chain_mapping"], {'F': 'D', 'C': 'C'})
+        self.assertEqual(sc.rmsd_details["J"][mol.ResNum(1)]["bs_num_res"], 15)
+        self.assertEqual(sc.rmsd_details["J"][mol.ResNum(1)]["bs_num_overlap_res"], 15)
+        self.assertEqual(sc.rmsd_details["J"][mol.ResNum(1)]["target_ligand"].qualified_name, 'I.G3D1')
+        self.assertEqual(sc.rmsd_details["J"][mol.ResNum(1)]["model_ligand"].qualified_name, 'J.G3D1')
+        self.assertEqual(sc.rmsd_details["F"][mol.ResNum(1)]["chain_mapping"], {'B': 'B', 'G': 'A'})
+        self.assertEqual(sc.rmsd_details["F"][mol.ResNum(1)]["bs_num_res"], 15)
+        self.assertEqual(sc.rmsd_details["F"][mol.ResNum(1)]["bs_num_overlap_res"], 15)
+        self.assertEqual(sc.rmsd_details["F"][mol.ResNum(1)]["target_ligand"].qualified_name, 'K.G3D1')
+        self.assertEqual(sc.rmsd_details["F"][mol.ResNum(1)]["model_ligand"].qualified_name, 'F.G3D1')
 
         # lddt_pli
-        self.assertAlmostEqual(sc.lddt_pli["J"][(1, "\x00")], 0.9127105666156202, 5)
-        self.assertAlmostEqual(sc.lddt_pli["F"][(1, "\x00")], 0.915929203539823, 6)
+        self.assertAlmostEqual(sc.lddt_pli["J"][mol.ResNum(1)], 0.9127105666156202, 5)
+        self.assertAlmostEqual(sc.lddt_pli["F"][mol.ResNum(1)], 0.915929203539823, 6)
         # lddt_pli_details
-        self.assertAlmostEqual(sc.lddt_pli_details["J"][(1, "\x00")]["rmsd"], 0.8016608357429504, 4)
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["lddt_pli_n_contacts"], 5224)
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["chain_mapping"], {'F': 'D', 'C': 'C'})
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["bs_num_res"], 15)
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["bs_num_overlap_res"], 15)
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["target_ligand"].qualified_name, 'I.G3D1')
-        self.assertEqual(sc.lddt_pli_details["J"][(1, "\x00")]["model_ligand"].qualified_name, 'J.G3D1')
-        self.assertAlmostEqual(sc.lddt_pli_details["F"][(1, "\x00")]["rmsd"], 0.9286373257637024, 4)
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["lddt_pli_n_contacts"], 5424)
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["chain_mapping"], {'B': 'B', 'G': 'A'})
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["bs_num_res"], 15)
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["bs_num_overlap_res"], 15)
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["target_ligand"].qualified_name, 'K.G3D1')
-        self.assertEqual(sc.lddt_pli_details["F"][(1, "\x00")]["model_ligand"].qualified_name, 'F.G3D1')
+        self.assertAlmostEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["rmsd"], 0.8016608357429504, 4)
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["lddt_pli_n_contacts"], 5224)
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["chain_mapping"], {'F': 'D', 'C': 'C'})
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["bs_num_res"], 15)
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["bs_num_overlap_res"], 15)
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["target_ligand"].qualified_name, 'I.G3D1')
+        self.assertEqual(sc.lddt_pli_details["J"][mol.ResNum(1)]["model_ligand"].qualified_name, 'J.G3D1')
+        self.assertAlmostEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["rmsd"], 0.9286373257637024, 4)
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["lddt_pli_n_contacts"], 5424)
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["chain_mapping"], {'B': 'B', 'G': 'A'})
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["bs_num_res"], 15)
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["bs_num_overlap_res"], 15)
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["target_ligand"].qualified_name, 'K.G3D1')
+        self.assertEqual(sc.lddt_pli_details["F"][mol.ResNum(1)]["model_ligand"].qualified_name, 'F.G3D1')
 
 
 if __name__ == "__main__":