more functions and methods