BP shifts blame for oil spill