Change callback systems to generators