add recursive processing; need evaluator and parallelization