improve geohack parser, add tests