change callback interface to callable