add descriptive comments for functions