added documentation, cache, and exception handling