Implemented Dispose() plus lots of documentation