added callbacks, needs improvement