re-orgnize the class and packages