A system for transmitting data using light, the system comprising: a first light source configured to transmit a first data stream at a first power level and on a first wavelength to a receiver over a first optical communication path; and a second light source configured to transmit a second data stream at a second power level different than the first power level and on the first wavelength to the receiver over the first optical communication path simultaneously to a transmission of the first data stream by the first light source; characterized in that the system further comprises a receiver configured to receive the first and second data streams, and demultiplex the first and second data streams by a plurality of detection models, wherein the receiver is configured to demultiplex the first and second data streams by: - inputting a photon count of received photons to the plurality of detection models, wherein each of the plurality of detection models comprises a probability distribution modelling a probability of a number of photons striking a photodetector of the receiver in a particular time period for a given power level, corresponding to a bit assignment of the first and second data streams, - assigning a value to the first data stream and the second data stream equal to the corresponding bit assignment of the detection model that produces a highest probability given a photon count. a first light source configured to transmit a first data stream at a first power level and on a first wavelength to a receiver over a first optical communication path; and a second light source configured to transmit a second data stream at a second power level different than the first power level and on the first wavelength to the receiver over the first optical communication path simultaneously to a transmission of the first data stream by the first light source; characterized in that the system further comprises a receiver configured to receive the first and second data streams, and demultiplex the first and second data streams by a plurality of detection models, wherein the receiver is configured to demultiplex the first and second data streams by: - inputting a photon count of received photons to the plurality of detection models, wherein each of the plurality of detection models comprises a probability distribution modelling a probability of a number of photons striking a photodetector of the receiver in a particular time period for a given power level, corresponding to a bit assignment of the first and second data streams, - assigning a value to the first data stream and the second data stream equal to the corresponding bit assignment of the detection model that produces a highest probability given a photon count. - inputting a photon count of received photons to the plurality of detection models, wherein each of the plurality of detection models comprises a probability distribution modelling a probability of a number of photons striking a photodetector of the receiver in a particular time period for a given power level, corresponding to a bit assignment of the first and second data streams, - assigning a value to the first data stream and the second data stream equal to the corresponding bit assignment of the detection model that produces a highest probability given a photon count.