Add convenince methods, documentation, and typed exception