#add - allow setting cursor to a non existent line
#update - cursor positioning
#fix - merge