do recursive cp