diff --git a/ellipsyswrapper/ellipsys_output.py b/ellipsyswrapper/ellipsys_output.py
index be7cb89e27266c6760f9f41ae6e5cd606d4fff81..15aeefc8537d7e668343f731080f4ba1d0ed4185 100644
--- a/ellipsyswrapper/ellipsys_output.py
+++ b/ellipsyswrapper/ellipsys_output.py
@@ -431,8 +431,8 @@ class EllipSys3DOutput(object):
                             setattr(self, 'ext_%s_%iCF%03d' % (xdir, grlev, i), data[ix, 5])
                             setattr(self, 'ext_%s_%iP_ave%03d' % (xdir, grlev, i), data[ix, 6])
                             setattr(self, 'ext_%s_%iCF_ave%03d' % (xdir, grlev, i), data[ix, 7])
-
-        # read the grid.points file
+        
+        # read the grid.*points file
         var_map = {}
         for grlev in range(1, 6):
             filename = self.project + '.%ipoints' % grlev
@@ -457,3 +457,56 @@ class EllipSys3DOutput(object):
             for j in range(data.shape[1]):
                 var = getattr(self, 'pt_ext_%s' % var_map[j])
                 var.append(data[:, j])
+       
+        # read the grid.*les file
+        var_map = {}
+        for grlev in range(1, 6):
+            filename = self.project + '.%iles' % grlev
+            if not os.path.exists(filename):
+                break
+            fid = open(filename, 'r')
+            fid.readline()
+            fid.readline()
+            fid.readline()
+            line = fid.readline()
+            ivar = 0
+            while line.startswith('#'):
+                name = line.split()[-1]
+                var_map[ivar] = name
+                if not hasattr(self, 'les_ext_%s' % name):
+                    setattr(self, 'les_ext_%s' % name, [])
+                line = fid.readline()
+                ivar += 1
+            # unroll readline so all data is read by loadtxt
+            fid.seek(-len(line), 1)
+            data = np.loadtxt(fid)
+            for j in range(data.shape[1]):
+                var = getattr(self, 'les_ext_%s' % var_map[j])
+                var.append(data[:, j])
+
+        # read the grid.*ha file
+        var_map = {}
+        for grlev in range(1, 6):
+            filename = self.project + '.%iha' % grlev
+            if not os.path.exists(filename):
+                break
+            fid = open(filename, 'r')
+            fid.readline()
+            fid.readline()
+            fid.readline()
+            line = fid.readline()
+            ivar = 0
+            while line.startswith('#'):
+                name = line.split()[-1]
+                var_map[ivar] = name
+                if not hasattr(self, 'ha_ext_%s' % name):
+                    setattr(self, 'ha_ext_%s' % name, [])
+                line = fid.readline()
+                ivar += 1
+            # unroll readline so all data is read by loadtxt
+            fid.seek(-len(line), 1)
+            data = np.loadtxt(fid)
+            for j in range(data.shape[1]):
+                var = getattr(self, 'ha_ext_%s' % var_map[j])
+                var.append(data[:, j])
+
diff --git a/ellipsyswrapper/testsuite.py b/ellipsyswrapper/testsuite.py
index f9cdcd5c3759349f75a113aa61088403706e046e..07f556e6de5300519f764ab65f2af9eb26141b87 100644
--- a/ellipsyswrapper/testsuite.py
+++ b/ellipsyswrapper/testsuite.py
@@ -103,7 +103,9 @@ class CaseRunner(object):
                      'grid.%ipoints',
                      'grid.%iHY',
                      'grid.%iFY',
-                     'grid.%iPY']
+                     'grid.%iPY',
+                     'grid.%iles',
+                     'grid.%iha']
             for i in range(1, 0, -1):
                 for f in files:
                     try: