should we have an else raising ArgumentError ?