Split ValMappedCase into a clean interface and seprate implementation trait.