docs and tests