Also is it worth introducing a separate exception type instead of using `RuntimeError`?