first draft completed, just need to add comments