decouple parser a bit