Will this still work with NumPy arrays?   Maybe `PyArray` should be abstract and we should have two kinds.