fixed snap to be context sensitive