diff --git a/bin/isinstall b/bin/isinstall
index d36f469af69df23a577a9b63a22a8b545495ea5f..b1878a77dde74ab2395314a59f27adc441ae6d2d 100755
--- a/bin/isinstall
+++ b/bin/isinstall
@@ -74,12 +74,17 @@ try:
         exit(1)
     # install start time
     t0 = time.time()
+    # global dict of execution context
+    gl_exec = { "parser": p_main }
     # run parser scripts
-    pkg.run_parser({ "parser": p_main })
+    pkg.run_parser(gl_exec)
     # call parser again, with extended attributes
+    arrow("Run parser", 1, args.verbose)
     args = p_main.parse_args()
+    # add parser result to global dict
+    gl_exec["args"] = args
     # run setup scripts
-    pkg.run_setup({"args": args})
+    pkg.run_setup(gl_exec)
     # compute building time
     t1 = time.time()
     dt = int(t1 - t0)
diff --git a/installsystems/image.py b/installsystems/image.py
index f4900bfa58e185c9f6a17502a1afc3332e45cd95..08490e3507621c9838e921f0bc72a87d54893425 100644
--- a/installsystems/image.py
+++ b/installsystems/image.py
@@ -379,6 +379,7 @@ class PackageImage(Image):
         '''
         Run parser scripts
         '''
+        gl["image"] = self
         self._run_scripts(gl, "parser")
 
     def run_setup(self, gl):
@@ -392,7 +393,7 @@ class PackageImage(Image):
         '''
         Run scripts in a tarball directory
         '''
-        arrow("Run %s" % directory, 1, self.verbose)
+        arrow("Run %s scripts" % directory, 1, self.verbose)
         # get list of parser scripts
         l_scripts = self._tarball.getnames("%s/.*\.py" % directory)
         # order matter!