added some comments to implementation classes