added required classes and functions