diff --git a/parser/parser-castep/CastepParser.py b/parser/parser-castep/CastepParser.py
index 2182586d4dc45046b090a52fa3f5e5c4b83d0cff..089b9dddc1cc1ec956e654ba2b5be872b520394e 100644
--- a/parser/parser-castep/CastepParser.py
+++ b/parser/parser-castep/CastepParser.py
@@ -316,7 +316,8 @@ class CastepParserContext(object):
             backend.addValue('XC_functional', "_".join(sorted(self.functionals)))
             backend.addValue('relativity_method', self.relativistic)
             if self.dispersion is not None:
-                backend.addValue('XC_method_current', ("_".join(sorted(self.functionals)))+'_'+self.dispersion+'_'+self.relativistic)
+                print('ciao')
+                # backend.addValue('XC_method_current', ("_".join(sorted(self.functionals)))+'_'+self.dispersion+'_'+self.relativistic)
             else:
                 backend.addValue('XC_method_current', ("_".join(sorted(self.functionals)))+'_'+self.relativistic)
         
@@ -469,9 +470,11 @@ class CastepParserContext(object):
         if self.dispersion is not None:
             van_der_waals_energy = section['x_castep_total_dispersion_corrected_energy']
             total_energy = section['energy_total']
-            for i in range(len(total_energy)):
-                self.disp_energy = abs(van_der_waals_energy[i] - total_energy[i])
-            backend.addValue('energy_van_der_Waals', self.disp_energy)
+          
+            if total_energy and van_der_waals_energy:
+                for i in range(len(total_energy)):
+                    self.disp_energy = abs(van_der_waals_energy[i] - total_energy[i])
+                backend.addValue('energy_van_der_Waals', self.disp_energy)
         
 
         finite_basis_corr_energy = section['x_castep_total_energy_corrected_for_finite_basis_store'] ###Conversion to Jule
@@ -1543,9 +1546,26 @@ def build_CastepMainFileSimpleMatcher():
                     SM(r"Final energy\,\s*E\s*= *(?P<energy_total__eV>[-+0-9.eEdD]*)"), # matching final converged total energy
                     SM(r"\sTotal energy corrected for finite basis set\s\=\s*(?P<x_castep_total_energy_corrected_for_finite_basis_store>[-+0-9.eEdD]+)\s+"),
                     SM(r"Dispersion corrected final energy\*\s=\s*(?P<x_castep_total_dispersion_corrected_energy__eV>[-+0-9.eEdD]*)"),#total energy including dispersion correction
+                    
                     SM(r"Final free energy\s*\(E\-TS\)\s*= *(?P<energy_free__eV>[-+0-9.eEdD]*)"), # matching final converged total free energy
                     SM(r"NB est\. 0K energy\s*\(E\-0\.5TS\)\s*= *(?P<energy_total_T0__eV>[-+0-9.eEdD]*)"), # 0K corrected final SCF energy
-                 
+                    # 0K corrected final SCF energy
+                    
+                    SM(sections = ['x_castep_section_DFT_SEDC'],
+                        startReStr = r"\%\s*SEDC PBC Interaction Energy\s*",
+                        # endReStr = "\n",
+                        subMatchers = [
+                        SM(r"\%\s*(?P<x_castep_shell>[0-9]+)\s*(?P<x_castep_correction_energy__eV>[-\d\.]+)\s*(?P<x_castep_de_atom__eV>[\d\.]+)\s*(?P<x_castep_dfmax_atom__eV>[\d\.]+)\s*",
+                                        repeats = True),
+                        SM(r"\%\'TS\'\/PBE structure energy corr.\s*\=\s*(?P<x_castep_structure_energy_corr__eV>[-+0-9.eEdD]*)"),
+                        SM(r"\%\'TS\'\/PBE image interaction corr.\s*\=\s*(?P<x_castep_PBC_image_inter_corr__eV>[-+0-9.eEdD]*)"),
+                        SM(r"\%\'TS\'\/PBE total energy correction\s*\=\s*(?P<x_castep_total_energy_correction__eV>[-+0-9.eEdD]*)"),    
+                        SM(r"\%\'TS\'\/PBE correction \|F\|max\s*\=\s*(?P<x_castep_total_fmax_correction>[-+0-9.eEdD]*)"),    
+                        SM(r"Dispersion corrected final energy\*\,\sEcor\s*\=\s*(?P<x_castep_total_dispersion_corrected_energy__eV>[-+0-9.eEdD]*)"),
+                        SM(r"Dispersion corrected final free energy\*\,\s(Ecor\-TS)\s\=\s*(?P<x_castep_total_dispersion_corrected_free_energy__eV>[-+0-9.eEdD]*)"),
+                        SM(r"NB dispersion corrected est\. 0K energy\*\(E\-0\.5TS\)\s\= *(?P<x_castep_disp_corrected_energy_total_T0__eV>[-+0-9.eEdD]*)"), 
+                        ]),
+
                     SM(startReStr = r"\s\*\*\*\*\** Forces \*\*\*\*\**\s*",
                          subMatchers = [
                                     SM(r"\s*\*\s*[A-Za-z]+\s*[0-9]\s*(?P<x_castep_store_atom_forces>[-\d\.]+\s+[-\d\.]+\s+[-\d\.]+)",
diff --git a/src/test/scala/eu/nomad_lab/parsers/CastepParserSpec.scala b/src/test/scala/eu/nomad_lab/parsers/CastepParserSpec.scala
index eee9b779fc4d2dad021447c06121217055d2a736..54c33b5689cccc7a6260b0c98804872a38612b83 100644
--- a/src/test/scala/eu/nomad_lab/parsers/CastepParserSpec.scala
+++ b/src/test/scala/eu/nomad_lab/parsers/CastepParserSpec.scala
@@ -106,3 +106,13 @@ object CastepParserSpec9 extends Specification {
     }
   }
 }
+object CastepParserSpec10 extends Specification {
+  "CastepParserTest" >> {
+    "test with json-events" >> {
+      ParserRun.parse(CastepParser, "parsers/castep/test/examples/Surf/surf.castep", "json-events") must_== ParseResult.ParseSuccess
+    }
+    "test with json" >> {
+      ParserRun.parse(CastepParser, "parsers/castep/test/examples/Surf/surf.castep", "json") must_== ParseResult.ParseSuccess
+    }
+  }
+}
diff --git a/test/examples/Surfece/surf.bands b/test/examples/Surf/surf.bands
similarity index 100%
rename from test/examples/Surfece/surf.bands
rename to test/examples/Surf/surf.bands
diff --git a/test/examples/Surfece/surf.castep b/test/examples/Surf/surf.castep
similarity index 100%
rename from test/examples/Surfece/surf.castep
rename to test/examples/Surf/surf.castep
diff --git a/test/examples/Surfece/surf.cell b/test/examples/Surf/surf.cell
similarity index 100%
rename from test/examples/Surfece/surf.cell
rename to test/examples/Surf/surf.cell