events: edge detection