what's going to happen when case not matched? might be good to explicitly raise the error