diff --git a/parser/parser-orca/orca_parser.py b/parser/parser-orca/orca_parser.py
index 6535ab16b4768291c3dc7a3d6ede38ea688ad9a6..63d0040f07bb2eebb6aa2702189e712131c2ca00 100644
--- a/parser/parser-orca/orca_parser.py
+++ b/parser/parser-orca/orca_parser.py
@@ -48,6 +48,17 @@ class OrcaContext(object):
             backend.addArrayValue("atom_positions", pos)
             backend.addValue("atom_labels", value["x_orca_atom_labels"])
 
+    def onClose_x_orca_final_geometry(self, backend, gIndex, value):
+            x = value["x_orca_atom_positions_x_geo_opt"]
+            y = value["x_orca_atom_positions_y_geo_opt"]
+            z = value["x_orca_atom_positions_z_geo_opt"]
+            pos = np.zeros((len(x),3), dtype=float)
+            pos[:,0] = x
+            pos[:,1] = y
+            pos[:,2] = z
+            backend.addArrayValue("geometry_optimization_converged", pos)
+            backend.addValue("atom_labels", value["x_orca_atom_labels_geo_opt"])
+
     def onClose_x_orca_XC_functional(self, backend, gIndex, value):
             x = value["orca_x_dft_method"]
             backend.addValue("XC_functional_name", x)
@@ -56,6 +67,18 @@ class OrcaContext(object):
             x = value["orca_x_total_energy"]
             backend.addValue("energy_total", x)
 
+    def onClose_x_exchange_energy(self, backend, gIndex, value):
+            x = value["orca_x_exchange_energy"]
+            backend.addValue("energy_X", x)
+
+    def onClose_x_correlation_energy(self, backend, gIndex, value):
+            x = value["orca_x_correlation_energy"]
+            backend.addValue("energy_C", x)
+
+    def onClose_x_xc_energy(self, backend, gIndex, value):
+            x = value["orca_x_exchange_correlation_energy"]
+            backend.addValue("energy_XC", x)
+
     def onClose_x_orca_orbital_energies(self, backend, gIndex, value):
             x = value["orca_x_orbital_nb"]
             y = value["orca_x_orbital_occupation_nb"]
@@ -348,8 +371,8 @@ def buildSinglePointMatcher():
           SM("Energy Change\s*(?P<x_orca_energy_change_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_energy_change_tol_value__hartree>[-+0-9.eEdD]+) Eh"),
           SM("Max\. Gradient\s*(?P<x_orca_max_gradient_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_max_gradient_tol_value__hartree_bohr_1>[-+0-9.eEdD]+) Eh/bohr"),
           SM("RMS Gradient\s*(?P<x_orca_rms_gradient_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_rms_gradient_tol_value__hartree_bohr_1>[-+0-9.eEdD]+) Eh/bohr"),
-          SM("Max\. Displacement\s*(?P<x_orca_max_displacement_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_max_displacement_tol__bohr>[-+0-9.eEdD]+) bohr"),
-          SM("RMS Displacement\s*(?P<x_orca_rms_displacement_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_rms_displacement_tol__bohr>[-+0-9.eEdD]+) bohr"),
+          SM("Max\. Displacement\s*(?P<x_orca_max_displacement_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_max_displacement_tol_value__bohr>[-+0-9.eEdD]+) bohr"),
+          SM("RMS Displacement\s*(?P<x_orca_rms_displacement_tol>[a-zA-Z]+)\s+\.\.\.\.\s+(?P<x_orca_rms_displacement_tol_value__bohr>[-+0-9.eEdD]+) bohr"),
           # Final geometry:
           # CARTESIAN COORDINATES (ANGSTROEM)
           SM(name = 'final geometry',