logical expressions added - using visitor paying off