added some new classes and methods