event-driven communication between graphics elements and the controller; fix swap partners heuristic bug