First version of semantic checks implemented in a Visitor
At this moment the visitor still has a cyclic dependency
a possible 3 strategy's to remove it (but which one is most beautiful?)