refactored expression evaluation to value provider