documentation and tests added