refactored push and pull methods so they are async now