add iterative parsing