with user interaction