removed global variables
diff --git a/metalua.lua b/metalua.lua
index 4641380..eee8e6e 100644
--- a/metalua.lua
+++ b/metalua.lua
@@ -17,6 +17,13 @@
 --
 -------------------------------------------------------------------------------
 
+---
+-- Main executable script.
+-- Compiles, interprets, prints source files, runs an interactive shell,
+-- depending on command-line options.
+--
+-- @module metalua
+
 -- Survive lack of checks
 if not pcall(require, 'checks') then function package.preload.checks() function checks() end end end
 
diff --git a/metalua/compiler.lua b/metalua/compiler.lua
index 69cd7b2..202b254 100644
--- a/metalua/compiler.lua
+++ b/metalua/compiler.lua
@@ -38,7 +38,7 @@
 --
 --------------------------------------------------------------------------------
 
-require 'checks'
+local checks = require 'checks'
 
 local M  = { }
 
diff --git a/metalua/compiler/ast_to_src.mlua b/metalua/compiler/ast_to_src.mlua
index 65283c6..9054088 100644
--- a/metalua/compiler/ast_to_src.mlua
+++ b/metalua/compiler/ast_to_src.mlua
@@ -392,7 +392,7 @@
             self:list (rhs, ", ")
         end
     else -- Can't create a local statement with 0 variables in plain Lua
-        self:acc (table.tostring (node, 'nohash', 80))
+        self:acc (pp.tostring (node, {metalua_tag=1, hide_hash=1, fix_indent=2}))
     end
 end
 
@@ -415,7 +415,7 @@
       -- Other localrec are unprintable ==> splice them --
           -- This cannot happen in a plain Lua AST. --
       self:acc "-{ "
-      self:acc (table.tostring (node, 'nohash', 80))
+      self:acc (pp.tostring (node, {metalua_tag=1, hide_hash=1, fix_indent=2}))
       self:acc " }"
    end
 end
diff --git a/metalua/compiler/parser/annot/generator.lua b/metalua/compiler/parser/annot/generator.lua
index a8fcd62..3a805ad 100644
--- a/metalua/compiler/parser/annot/generator.lua
+++ b/metalua/compiler/parser/annot/generator.lua
@@ -17,7 +17,7 @@
 --
 --------------------------------------------------------------------------------
 
-require 'checks'
+local checks = require 'checks'
 local gg = require 'metalua.grammar.generator'
 local M  = { }
 
diff --git a/metalua/compiler/parser/misc.lua b/metalua/compiler/parser/misc.lua
index a24b006..f7dde09 100644
--- a/metalua/compiler/parser/misc.lua
+++ b/metalua/compiler/parser/misc.lua
@@ -36,7 +36,8 @@
 --
 --------------------------------------------------------------------------------
 
-local gg       = require 'metalua.grammar.generator'
+local pp = require 'metalua.pprint'
+local gg = require 'metalua.grammar.generator'
 
 -- TODO: replace splice-aware versions with naive ones, move etensions in ./meta
 
@@ -115,7 +116,7 @@
             -- +{ `String{ `Index{ `Splice{ -{id[1]} }, `Number 1 } } }
             return { tag="String",  { tag="Index", { tag="Splice", id[1] },
                                       { tag="Number", 1 } } }
-        else error ("Identifier expected: "..table.tostring(id, 'nohash')) end
+        else error ("Identifier expected: "..pp.tostring (id, {metalua_tag=1, hide_hash=1})) end
     end
 
     --------------------------------------------------------------------------------
diff --git a/metalua/extension/match.mlua b/metalua/extension/match.mlua
index 8561e05..f55ff41 100644
--- a/metalua/extension/match.mlua
+++ b/metalua/extension/match.mlua
@@ -78,9 +78,9 @@
 -- TODO: cfg.ntmp isn't reset as often as it could. I'm not even sure
 --       the corresponding locals are declared.
 
-
-local gg  = require 'metalua.grammar.generator'
-local pp  = require 'metalua.pprint'
+local checks = require 'checks'
+local gg     = require 'metalua.grammar.generator'
+local pp     = require 'metalua.pprint'
 
 ----------------------------------------------------------------------
 -- This would have been best done through library 'metalua.walk',
diff --git a/metalua/grammar/generator.lua b/metalua/grammar/generator.lua
index 4633c6e..2680d8a 100644
--- a/metalua/grammar/generator.lua
+++ b/metalua/grammar/generator.lua
@@ -46,7 +46,9 @@
 
 local M = { }
 
-local lexer = require 'metalua.grammar.lexer'
+local checks = require 'checks'
+local lexer  = require 'metalua.grammar.lexer'
+local pp     = require 'metalua.pprint'
 
 --------------------------------------------------------------------------------
 -- Symbol generator: [gensym()] returns a guaranteed-to-be-unique identifier.
@@ -112,7 +114,7 @@
         else -- Invalid parser definition, this is *not* a parsing error
             error(string.format(
                       "Sequence `%s': element #%i is neither a string nor a parser: %s",
-                      p.name, i, table.tostring(e)))
+                      p.name, i, pp.tostring(e)))
         end
     end
     return r
diff --git a/metalua/grammar/lexer.lua b/metalua/grammar/lexer.lua
index 0a58058..0f96f8e 100644
--- a/metalua/grammar/lexer.lua
+++ b/metalua/grammar/lexer.lua
@@ -17,7 +17,7 @@
 --
 -------------------------------------------------------------------------------
 
-require 'checks'
+local checks = require 'checks'
 
 local M = { }
 
diff --git a/metalua/loader.lua b/metalua/loader.lua
index 5a79a4c..a33af5e 100644
--- a/metalua/loader.lua
+++ b/metalua/loader.lua
@@ -18,6 +18,7 @@
 --------------------------------------------------------------------------------
 
 local M = require "package" -- extend Lua's basic "package" module
+local checks = require 'checks'
 
 M.metalua_extension_prefix = 'metalua.extension.'
 
diff --git a/metalua/repl.mlua b/metalua/repl.mlua
index 4a39adf..0c89bc0 100644
--- a/metalua/repl.mlua
+++ b/metalua/repl.mlua
@@ -31,7 +31,7 @@
 local readline
 
 do -- set readline() to a line reader, either editline otr a default
-   local status, _ = pcall(require, 'editline')
+   local status, editline = pcall(require, 'editline')
    if status then
       local rl_handle = editline.init 'metalua'
       readline = |p| rl_handle:read(p)