def do_transform(transform, type_name, val, key=None, **kw):
    fn = getattr(transform, "transform_%s" % type_name, transform.transform_custom)
    val = fn(val, key=key, **kw)

    return val