push by ref. trying again