Improved documentation, removed unnecessary #includes
Refactored