different functions and classes