added callbacks and updated reademe