refactoring with new WitExpression class