zookeeper encapsulation
use state to control logic ensure code can distinguish different future
and readme to write down some notes