all the functions are finished, one extra, commenting not included