allow user to supply a cleanedValue method