internal representation using an expression tree