change arrays to use abstract pointers