Updated classes and added the basic design to the design doc