receiving and pushing data