modified after two pushs