add doc and test