some new array abstractions