add improved documentation