make callback functions optional