reorganized project and added class documentation