some parser functions should be private