we should aim to "constructor inject" leek and ui into tasks, not pass them to run. You can simulate this by doing

```sh
this.leek = leak
this.ui = ui;
```

expect these changes in future refactorings.