Added Documentation and Comments