moved NodeCursor and support into separate file