first commit
fix multi-threads