new event listener (thread-based)
all state buttons work