add threading
update misc