5th draft, fixed most TODOs.  now there are many things to rephrase