A method of providing an advertisement (420, 424) with a streamed media program having at least one advertising break, comprising the steps of: receiving first data from a user device in a media program provider, the data identifying the media program to be streamed to the user device; following the receiving first data step, transmitting second data from the media program provider to the user device, the second data comprising metadata defining an advertising break having at least one advertisement opportunity within the media program; at the advertisement opportunity and following the transmitting second data step, transmitting third data to the user device, the third data comprising advertising control options; following the transmitting third data step, receiving fourth data from the user device, the fourth data comprising the user selected advertising control options; following the receiving fourth data step, streaming the advertisement (420, 424) to the user device according to the user selected advertising control options, wherein the media program and advertisement are streamed to the user device in a temporal session of streaming the media program, and wherein the advertisement is streamed in a communication channel using a transport/transmission protocol; following the streaming step, receiving fifth data comprising data describing the viewing of the advertisement (420, 424) on the user device via the communication channel using control data of the transport/transmission protocol before the temporal session of streaming the media program to the user device ends, wherein the advertisement viewing data is determined while the advertisement is viewed on the user device by the user; and following the receiving fifth data step, deriving and storing advertisement viewing data from the received fifth data for use in determining an advertisement for a next advertisement opportunity in the media program. receiving first data from a user device in a media program provider, the data identifying the media program to be streamed to the user device; following the receiving first data step, transmitting second data from the media program provider to the user device, the second data comprising metadata defining an advertising break having at least one advertisement opportunity within the media program; at the advertisement opportunity and following the transmitting second data step, transmitting third data to the user device, the third data comprising advertising control options; following the transmitting third data step, receiving fourth data from the user device, the fourth data comprising the user selected advertising control options; following the receiving fourth data step, streaming the advertisement (420, 424) to the user device according to the user selected advertising control options, wherein the media program and advertisement are streamed to the user device in a temporal session of streaming the media program, and wherein the advertisement is streamed in a communication channel using a transport/transmission protocol; following the streaming step, receiving fifth data comprising data describing the viewing of the advertisement (420, 424) on the user device via the communication channel using control data of the transport/transmission protocol before the temporal session of streaming the media program to the user device ends, wherein the advertisement viewing data is determined while the advertisement is viewed on the user device by the user; and following the receiving fifth data step, deriving and storing advertisement viewing data from the received fifth data for use in determining an advertisement for a next advertisement opportunity in the media program.