This eases addition of new sample sources, since the manual virtual function dispatch functions are just calls via a protocol