make args non-destructive & parse safer