support multi-dimensional arrays