recursive Write