single threaded parse