add smooth function, touch event