add better docstrings