add initial documentation and tests