user interaction first pass