Incorporate `throwExpected`, provide integration tests, documentation and custom exceptions where necessary.