use *= to avoid a value appears multiple times
fix wrong shadowed()
fix system() and eval()