add default fail fn
fix false value become empty str bug