add new functions
clean up comments