add observe once
add pause/resume