completed first pass, need to add comments