split registration into explicit numpy backend