Make use of grpc callbacks

Currently, all callback mechanisms are self-implemented. Using grpc callbacks has the potential to reduce code and prevent errors that others already solved