ArrayField refactored