Added numerous comments