Maybe it's better to use `RuntimeException` instead? Why a custom one?