improved arrayCC type system