Rewrite the read loop to avoid expandnode. I think I made it worse.
Fix the annoying read problem.
Go back to the expandNode model, which was simpler.