tweaked nodecopy() function