Generic push - see diff