modify array values, w/ recursive support