add some docstrings
add sphinx based documentation system