move things into array operations, another factor of ~2