more detailed descriptions of the functions