user interaction + styling