implement mutex protection for race conditions
add documentations
set private
set private
refator
documented
documented