suggestion: i'd call this function `coercer`