Changed callback architecture to be class based instead