array logic