tweaks for using binding cell and other fiddles
special case for depth==1 in do_set
some fix ups, now seems to work