the problem is that all the tables begin with the same name (array1). thus the [; array1 rename $1 ( message you're sending will rename every table in all 6 abstractions. change the original arraynames to $0-array, and then go: [rename $1( | [s $0-array]