redefined with classes