add detailed comments to all files. These comments support JavaDoc