add some new class and modified some code