functional array