finish all the classes, which is enough to finish my current simulation. I will add more classes and functions