use non-primitive arrays