Update to use delegation instead of callbacks

Should help resolve some of the threading issues