change on function descriptions
add multi threading