add smooth_approach, use it on viewport