move cursor calculation to its own thread, heuristic the fuck out of it