add TODO: use CursorMoved to make it cleverer