diff --git a/Custom_EasyBlocks/imkl.py b/Custom_EasyBlocks/imkl.py
index bf800df8a5e29bda6384eb407a2d9cef1f55d746..ba2edf52343817523aa8770f7c409c07f030150d 100644
--- a/Custom_EasyBlocks/imkl.py
+++ b/Custom_EasyBlocks/imkl.py
@@ -33,7 +33,7 @@ EasyBuild support for installing the Intel Math Kernel Library (MKL), implemente
 @author: Ward Poelmans (Ghent University)
 @author: Lumir Jasiok (IT4Innovations)
 """
-
+import glob
 import itertools
 import os
 import shutil
@@ -67,13 +67,22 @@ class EB_imkl(IntelBase):
         return IntelBase.extra_options(extra_vars)
 
     def __init__(self, *args, **kwargs):
+        """Constructor for imkl easyblock."""
         super(EB_imkl, self).__init__(*args, **kwargs)
+
         # make sure $MKLROOT isn't set, it's known to cause problems with the installation
         self.cfg.update('unwanted_env_vars', ['MKLROOT'])
         self.cdftlibs = []
         self.mpi_spec = None
 
+        if LooseVersion(self.version) >= LooseVersion('2021'):
+            self.mkl_basedir = os.path.join('mkl', self.version)
+        else:
+            self.mkl_basedir = 'mkl'
+
     def prepare_step(self, *args, **kwargs):
+        """Prepare build environment."""
+
         if LooseVersion(self.version) >= LooseVersion('2017.2.174'):
             kwargs['requires_runtime_license'] = False
             super(EB_imkl, self).prepare_step(*args, **kwargs)
@@ -153,29 +162,37 @@ class EB_imkl(IntelBase):
                 if LooseVersion(self.version) >= LooseVersion('2021'):
                     compiler_subdir = os.path.join(
                         'compiler', self.version, 'linux', 'compiler', 'lib', 'intel64_lin')
-                    mkl_subdir = os.path.join('mkl', self.version)
                     pkg_config_path = [os.path.join(
-                        mkl_subdir, 'tools', 'pkgconfig')]
+                        self.mkl_basedir, 'tools', 'pkgconfig')]
                 else:
                     compiler_subdir = os.path.join('lib', 'intel64')
-                    mkl_subdir = 'mkl'
                     pkg_config_path = [os.path.join(
-                        mkl_subdir, 'bin', 'pkgconfig')]
-                    guesses['MANPATH'] = ['man', 'man/en_US']
+                        self.mkl_basedir, 'bin', 'pkgconfig')]
+                    guesses['MANPATH'] = ['man', os.path.join('man', 'en_US')]
                     if LooseVersion(self.version) >= LooseVersion('11.0'):
                         if LooseVersion(self.version) >= LooseVersion('11.3'):
                             guesses['MIC_LD_LIBRARY_PATH'] = [
-                                'lib/intel64_lin_mic', 'mkl/lib/mic']
+                                os.path.join('lib', 'intel64_lin_mic'),
+                                os.path.join(self.mkl_basedir, 'lib', 'mic'),
+                            ]
                         elif LooseVersion(self.version) >= LooseVersion('11.1'):
                             guesses['MIC_LD_LIBRARY_PATH'] = [
-                                'lib/mic', 'mkl/lib/mic']
+                                os.path.join('lib', 'mic'),
+                                os.path.join(self.mkl_basedir, 'lib', 'mic'),
+                            ]
                         else:
                             guesses['MIC_LD_LIBRARY_PATH'] = [
-                                'compiler/lib/mic', 'mkl/lib/mic']
-                library_path = [compiler_subdir, os.path.join(
-                    mkl_subdir, 'lib', 'intel64')]
-                cpath = [os.path.join(mkl_subdir, 'include'), os.path.join(
-                    mkl_subdir, 'include', 'fftw')]
+                                os.path.join('compiler', 'lib', 'mic'),
+                                os.path.join(self.mkl_basedir, 'lib', 'mic'),
+                            ]
+                library_path = [
+                    compiler_subdir,
+                    os.path.join(self.mkl_basedir, 'lib', 'intel64'),
+                ]
+                cpath = [
+                    os.path.join(self.mkl_basedir, 'include'),
+                    os.path.join(self.mkl_basedir, 'include', 'fftw'),
+                ]
                 guesses.update({
                     'PATH': [],
                     'LD_LIBRARY_PATH': library_path,
@@ -203,6 +220,12 @@ class EB_imkl(IntelBase):
 
     def make_module_extra(self):
         """Overwritten from Application to add extra txt"""
+
+        if 'MKL_EXAMPLES' not in self.cfg['modextravars']:
+            self.cfg.update('modextravars', {
+                'MKL_EXAMPLES': os.path.join(self.installdir, self.mkl_basedir, 'examples'),
+            })
+
         txt = super(EB_imkl, self).make_module_extra()
 
         if LooseVersion(self.version) >= LooseVersion('2021'):
@@ -219,11 +242,20 @@ class EB_imkl(IntelBase):
         """
         super(EB_imkl, self).post_install_step()
 
-        shlib_ext = get_shared_lib_ext()
+        # extract examples
+        examples_subdir = os.path.join(
+            self.installdir, self.mkl_basedir, 'examples')
+        if os.path.exists(examples_subdir):
+            cwd = change_dir(examples_subdir)
+            for examples_tarball in glob.glob('examples_*.tgz'):
+                run_cmd("tar xvzf %s -C ." % examples_tarball)
+            change_dir(cwd)
 
         # reload the dependencies
         self.load_dependency_modules()
 
+        shlib_ext = get_shared_lib_ext()
+
         if self.cfg['m32']:
             extra = {
                 'libmkl.%s' % shlib_ext: 'GROUP (-lmkl_intel -lmkl_intel_thread -lmkl_core)',
@@ -245,10 +277,8 @@ class EB_imkl(IntelBase):
 
         loosever = LooseVersion(self.version)
 
-        if loosever >= LooseVersion('2021'):
-            libsubdir = os.path.join('mkl', self.version, 'lib', 'intel64')
-        elif loosever >= LooseVersion('10.3'):
-            libsubdir = os.path.join('mkl', 'lib', 'intel64')
+        if loosever >= LooseVersion('10.3'):
+            libsubdir = os.path.join(self.mkl_basedir, 'lib', 'intel64')
         else:
             if self.cfg['m32']:
                 libsubdir = os.path.join('lib', '32')
@@ -263,11 +293,8 @@ class EB_imkl(IntelBase):
         # build the mkl interfaces, if desired
         if self.cfg['interfaces']:
 
-            if loosever >= LooseVersion('2021'):
-                intsubdir = os.path.join('mkl', self.version, 'interfaces')
-                inttarget = 'libintel64'
-            elif loosever >= LooseVersion('10.3'):
-                intsubdir = os.path.join('mkl', 'interfaces')
+            if loosever >= LooseVersion('10.3'):
+                intsubdir = os.path.join(self.mkl_basedir, 'interfaces')
                 inttarget = 'libintel64'
             else:
                 intsubdir = 'interfaces'
@@ -445,52 +472,55 @@ class EB_imkl(IntelBase):
             raise EasyBuildError(
                 "Sanity check for 32-bit not implemented yet for IMKL v%s (>= 10.3)", self.version)
 
-        if ver >= LooseVersion('2021'):
-            basedir = os.path.join('mkl', self.version)
-
+        if ver >= LooseVersion('10.3'):
             mkldirs = [
-                os.path.join(basedir, 'bin'),
-                os.path.join(basedir, 'lib', 'intel64'),
-                os.path.join(basedir, 'include'),
+                os.path.join(self.mkl_basedir, 'bin'),
+                os.path.join(self.mkl_basedir, 'lib', 'intel64'),
+                os.path.join(self.mkl_basedir, 'include'),
             ]
             libs += [lib % {'suff': suff}
                      for lib in extralibs for suff in ['lp64', 'ilp64']]
 
-            mklfiles = [
-                os.path.join(basedir, 'lib', 'intel64',
-                             'libmkl_core.%s' % shlib_ext),
-                os.path.join(basedir, 'include', 'mkl.h'),
-            ]
+            mklfiles = [os.path.join(self.mkl_basedir, 'include', 'mkl.h')]
             mklfiles.extend(
-                [os.path.join(basedir, 'lib', 'intel64', lib) for lib in libs])
+                [os.path.join(self.mkl_basedir, 'lib', 'intel64', lib) for lib in libs])
+
+        if ver >= LooseVersion('2021'):
+
+            mklfiles.append(os.path.join(self.mkl_basedir, 'lib',
+                                         'intel64', 'libmkl_core.%s' % shlib_ext))
 
         elif ver >= LooseVersion('10.3'):
-            mkldirs = ['bin', 'mkl/bin', 'mkl/lib/intel64', 'mkl/include']
             if ver < LooseVersion('11.3'):
-                mkldirs.append('mkl/bin/intel64')
-            libs += [lib % {'suff': suff}
-                     for lib in extralibs for suff in ['lp64', 'ilp64']]
-            mklfiles = ['mkl/lib/intel64/libmkl.%s' % shlib_ext, 'mkl/include/mkl.h'] + \
-                       ['mkl/lib/intel64/%s' % lib for lib in libs]
+                mkldirs.append(os.path.join(
+                    self.mkl_basedir, 'bin', 'intel64'))
+
+            mklfiles.append(os.path.join(self.mkl_basedir, 'lib',
+                                         'intel64', 'libmkl.%s' % shlib_ext))
+
             if ver >= LooseVersion('10.3.4') and ver < LooseVersion('11.1'):
-                mkldirs += ['compiler/lib/intel64']
+                mkldirs += [os.path.join('compiler', 'lib', 'intel64')]
+            elif ver >= LooseVersion('2017.0.0'):
+                mkldirs += [os.path.join('lib', 'intel64_lin')]
             else:
-                if ver >= LooseVersion('2017.0.0'):
-                    mkldirs += ['lib/intel64_lin']
-                else:
-                    mkldirs += ['lib/intel64']
+                mkldirs += [os.path.join('lib', 'intel64')]
 
         else:
             if self.cfg['m32']:
-                mklfiles = ['lib/32/libmkl.%s' % shlib_ext, 'include/mkl.h'] + \
-                           ['lib/32/%s' % lib for lib in libs]
-                mkldirs = ['lib/32', 'include/32', 'interfaces']
+                lib_subdir = '32'
             else:
+                lib_subdir = 'em64t'
                 libs += [lib % {'suff': suff}
                          for lib in extralibs for suff in ['lp64', 'ilp64']]
-                mklfiles = ['lib/em64t/libmkl.%s' % shlib_ext, 'include/mkl.h'] + \
-                           ['lib/em64t/%s' % lib for lib in libs]
-                mkldirs = ['lib/em64t', 'include/em64t', 'interfaces']
+
+            mklfiles = [
+                os.path.join('lib', lib_subdir, 'libmkl.%s' % shlib_ext),
+                os.path.join('include', 'mkl.h'),
+            ]
+            mklfiles.extend([os.path.join('lib', lib_subdir, lib)
+                             for lib in libs])
+            mkldirs = [os.path.join('lib', lib_subdir), os.path.join(
+                'include', lib_subdir), 'interfaces']
 
         custom_paths = {
             'files': mklfiles,
diff --git a/Golden_Repo/i/imkl/imkl-2021.2.0-gompi-2021.eb b/Golden_Repo/i/imkl/imkl-2021.2.0-gompi-2021.eb
index 60812b3538fa2610374939cf4681b9f32d65d45d..873755856e1eeda9df70ed54602cf51822e54124 100644
--- a/Golden_Repo/i/imkl/imkl-2021.2.0-gompi-2021.eb
+++ b/Golden_Repo/i/imkl/imkl-2021.2.0-gompi-2021.eb
@@ -21,28 +21,4 @@ checksums = ['816e9df26ff331d6c0751b86ed5f7d243f9f172e76f14e83b32bf4d1d619dbae']
 
 dontcreateinstalldir = 'True'
 
-local_examples = '%(installdir)s/mkl/%(version)s/examples'
-
-postinstallcmds = [
-    # extract the examples
-    'tar xvzf %s/examples_cluster_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_cluster_f.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_core_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_core_f.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_dpcpp.tgz -C %s/' % (local_examples, local_examples),
-    'tar xvzf %s/examples_f95.tgz -C %s/' % (local_examples, local_examples),
-    'tar xvzf %s/examples_offload_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_offload_f.tgz -C %s/' % (
-        local_examples, local_examples),
-]
-
-modextravars = {
-    'MKL_EXAMPLES': '%(installdir)s/mkl/%(version)s/examples/',
-}
-
 moduleclass = 'numlib'
diff --git a/Golden_Repo/i/imkl/imkl-2021.2.0.eb b/Golden_Repo/i/imkl/imkl-2021.2.0.eb
index 45370d182e3f339896e15eff044c3091cbb2f810..9fc08343d891d8ef526774af043ae70293e0f88a 100644
--- a/Golden_Repo/i/imkl/imkl-2021.2.0.eb
+++ b/Golden_Repo/i/imkl/imkl-2021.2.0.eb
@@ -25,28 +25,4 @@ interfaces = False
 
 hidden = True
 
-local_examples = '%(installdir)s/mkl/%(version)s/examples'
-
-postinstallcmds = [
-    # extract the examples
-    'tar xvzf %s/examples_cluster_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_cluster_f.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_core_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_core_f.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_dpcpp.tgz -C %s/' % (local_examples, local_examples),
-    'tar xvzf %s/examples_f95.tgz -C %s/' % (local_examples, local_examples),
-    'tar xvzf %s/examples_offload_c.tgz -C %s/' % (
-        local_examples, local_examples),
-    'tar xvzf %s/examples_offload_f.tgz -C %s/' % (
-        local_examples, local_examples),
-]
-
-modextravars = {
-    'MKL_EXAMPLES': '%(installdir)s/mkl/%(version)s/examples/',
-}
-
 moduleclass = 'numlib'