added callbacks, finished initial lifecycle handling