Adding Basics, some ADTs and an observer pattern