callbacks now return self to prevent errors