now with most of the comments needed