  Piggybacking codes are a special class of MDS array codes that can achieve
small repair bandwidth with small sub-packetization by first creating some
instances of an $(n,k)$ MDS code, such as a Reed-Solomon (RS) code, and then
designing the piggyback function. In this paper, we propose a new piggybacking
coding design which designs the piggyback function over some instances of both
$(n,k)$ MDS code and $(n,k')$ MDS code, when $k\geq k'$. We show that our new
piggybacking design can significantly reduce the repair bandwidth for
single-node failures. When $k=k'$, we design piggybacking code that is MDS code
and we show that the designed code has lower repair bandwidth for single-node
failures than all existing piggybacking codes when the number of parity node
$r=n-k\geq8$ and the sub-packetization $\alpha<r$.
  Moreover, we propose another piggybacking codes by designing $n$ piggyback
functions of some instances of $(n,k)$ MDS code and adding the $n$ piggyback
functions into the $n$ newly created empty entries with no data symbols. We
show that our code can significantly reduce repair bandwidth for single-node
failures at a cost of slightly more storage overhead. In addition, we show that
our code can recover any $r+1$ node failures for some parameters. We also show
that our code has lower repair bandwidth than locally repairable codes (LRCs)
under the same fault-tolerance and redundancy for some parameters.
