basically implement the parsing