packpropagation explanation