added some comments to the implementation