moved conversion to model with callbacks