refactoring (new virtual "class Expression")