multithread rewrite
Merge branch 'multidown-improve'