improve API, add documents and update dependencies.