Added documentation and method toString