change return None to 0 & add call back param