divided into classes and other methods