fix all the bugs
add todo