adding pushing and pulling