Added Shapes (so far, rectangles and circles). Much refactoring too