add optinoal on data arg