public void watch(Source source) {
		// make sure the source exists:
		if (source == null)
			return;

		// make sure we aren't already watching this source:
		if (streamingSources.contains(source))
			return;

		ListIterator<Source> iter;
		Source src;

		// Make sure noone else is accessing the list of sources:
		synchronized (listLock) {
			// Any currently watched source which is null or playing on the
			// same channel as the new source should be stopped and removed
			// from the list.
			iter = streamingSources.listIterator();
			while (iter.hasNext()) {
				src = iter.next();
				if (src == null) {
					iter.remove();
				} else if (source.channel == src.channel) {
					src.stop();
					iter.remove();
				}
			}

			// Add the new source to the list:
			streamingSources.add(source);
		}
	}