added expression abstract syntax tree (composite pattern)