You can avoid the cyclic dependency by relying on `traceur` magically appearing in the global scope. Minimal diff: usrbincc@74e9da0a329d. passes all tests. To allow `src/node/require.js` to be required separately, you could just move all its code into `src/node/traceur.js`, leaving a bare shell.

```js
// file: src/node/require.js
module.exports = require('./traceur.js').require;
```

I consider that a better solution. Keeps the magic limited to one file. Then again, it makes you wonder why you'd even need `src/node/require.js`, since it does so little.

----

If you don't mind `var interpret = require('./interpret.js')` being synchronous, I believe you could just use `traceur.require`.

```js
function interpret(filename, argv, flags) {
  // setup argv, execArgv, etc.
  // ...

  traceur.require(filename);
}
```

similar to what's done in the `traceur` command itself.

```bash
#!/usr/bin/env node

require('./src/node/command.js');
```