Refactor array projectors to use a common suprtclass