refactorig to more complex evaluator and lightweight parser