with user interactivity