string parser, tricky