This might be only a remote possibility, but should we also add a default case that throws an exception? Just in case that a new enum value is added without updating this case statement.