added `dryRun` mode