refactor Require
ModuleSpec: use separate Require instances for different cases. Now the suspicious require.impl() breaks again!