implementing codegen for unaryExpr etc