push and pull dynamic