add spec
modify demo & fix bug