change the api a little.  improve documentation.