greatly improved documentation