add comments to understand what's happening