cursor no longer calculates 'offset' but stores the absolute position
this also helps not introducing that specific math to the outside code
more const-correctness fixes and general accessors instead of plain structs
access and modification, where specific ctor or helper method should've
been used instead