functions to do the actual read

These are pretty hacky but could be improved, the worst is converting the CRS