I don't think the return type of `T` of the argument is correct, you should be able to transform the value into a different type, no?