simplify callback state by pushing into a callback vs maintaining a list