changed a lot and fixed a lot