refactored and added exprnode