fixed abstract arrayValue to take factory parameter