private run() to DRY things out