this leaks i into `window`