Gradually adding classes and extending the functionality of the abstract
syntax tree. Should think about using reflection to dynamically create
classes in the next commit.