basic parser structure