modify push fn