i'm not keen on this change to the base class to support the needs of the `Array` subclass. I would prefer this logic to live in the `Array` constructor to just generate the appropriate factory lambda.