added a callback parameter to push method