todo: implement postwalk for destroy and copy functions