it compiles but doesn't work; runtime non-exhaustive