refined the API, add more docs