initial commit
add comments to explain the code