Finish expression refactoring into BaseExpression & subclasses