use setter methods for callback, do not want to update the constructor signature every time we add new callbacks