Updated and added many parts; added documentation.